pre{
line-height:1;
color:#1e1e1e;
background-color:#d2d2d2;
font-size:16px;}.sysFunc{color:#627cf6;font-style:italic;font-weight:bold;}
.selfFuc{color:#800080;}
.bool{color:#d2576f;}
.condition{color:#000080;font-weight:bold;}
.key{color:#000080;}
.var{color:#800000;font-style:italic;}
.Digit{color:#ff00ff;font-weight:bold;}
.includePre{color:#1e1e1e;}
.operator {color:#008000;font-weight:bold;}

 
 
  所有的类  都只有一个析构函数和赋值函数
            但可以有多个构造函数
 
  对于任意类,C++编译器会自动产生4个缺省的函数,分别是:
 
      A()  // 缺省的无参构造函数   如果定义了任意一个构造函数,则此默认构造函数失效
 
      A(const A &a); // 缺省的拷贝构造函数,即浅拷贝
      A& operator=(const A &a) ; // 缺省的赋值函数
     ~A();缺省的析构函数
 
 

按类型划分

 

1 默认构造函数

  A();         编译器产生的缺省构造函数
 

2 拷贝构造函数

 
  构造函数参数只有一个,且参数类型为该类类型,则为拷贝构造函数。
  如
A(A&)
A(const A&)
A(A&,int i=0)   //若其他参数都有默认值,则这个构造函数也是拷贝构造函数
 

2.1 默认拷贝构造函数

  A(const A &a);   浅拷贝  普通的拷贝  即用a的数据对新对象简单的一一赋值
 

2.2 深拷贝

 A(const A&a) ;  重新动态分配空间
 

什么时候发生调用拷贝函数?

 

1)         通过另一个对象进行初始化

A  a;
A  b=a;
A  c(a);
 

2)值传递

   Void Fun(A a){}
 

3)        对象以值传递方式从函数返回

 
A Fun(){
A a;
Return a;
}
 
 

3 转换构造函数

  与拷贝构造函数类似,只有一个参数,但该参数不是该类的类型而是其它类型。
 
 
A(B a){};
 
A a;
B b
a=b;   //  执行转换函数 A(b)   
 

按限制访问划分

 
 

构造函数一般为公共类型,但是特殊情况下,使用私有类型。

 
 
 
 

1 单例模式

 
  私有化所有的构造函数
 
 
      代码;:
 
//Singleton.h
class Singleton 
{
public:
       static Singleton* GetInstance();
private:
       Singleton() {}
       static Singleton *singleton;
};
//Singleton.cpp
Singleton* Singleton::singleton = NULL;
Singleton* Singleton::GetInstance()
{
       if(singleton == NULL)
              singleton = new Singleton();
       return singleton;
}
 

2 私有化拷贝构造函数 预防默认拷贝

 

防止  初始化、值传递、返回值时发生拷贝构造函数

本文使用 书画小说软件 发布,内容与软件无关,书画小说软件 更惬意的读、更舒心的写、更轻松的发布。

 

类 .xml的更多相关文章

  1. Java学习-023-Properties 类 XML 配置文件读取及写入源代码

    之前的几篇 Properties 文章已经讲述过了 Java 配置文件类 Properties 的基本用法,查看 JDK 的帮助文档时,也可看到在 Properties 类中还有两个方法 loadFr ...

  2. 类xml数据格式解析

    需要解析一种类xml的数据文件,数据格式1如下: <head> //文件头 <type>xtype</type> <condition> key1=va ...

  3. Java常用工具类---XML工具类、数据验证工具类

    package com.jarvis.base.util; import java.io.File;import java.io.FileWriter;import java.io.IOExcepti ...

  4. [ java 工具类] xml字符串解析成Map(DOM解析)

    package com.tencent.jungle.wechat.util; import com.google.inject.Singleton; import org.w3c.dom.Docum ...

  5. testng xml中按顺序执行java类

    如红字部份,将安顺序执行4个类 <?xml version="1.0" encoding="UTF-8"?><suite name=" ...

  6. PHP对XML文件操作类讲解

    <?phpclass XML{    private $dom;        function __construct ()    {        $this->dom = new D ...

  7. 自动生成实体类和xml

    1 首先eclipse需要安装一个插件 2 两个配置文件 1 generator.properties 2 generator.xml <?xml version="1.0" ...

  8. PHP自定义XML类实现数组到XML文件的转换

    这两天在公司写和各应用商店应用内搜索的接口,大致就像百度应用内搜索这样的东西,具体可以点下面的链接查看. 百度应用内搜索 有的应用商店需要JSON格式的数据,所以我只需要用下面的语句就可以返回对方服务 ...

  9. Javaweb学习笔记——使用Jdom解析xml

    一.前言 Jdom是什么? Jdom是一个开源项目,基于树形结构,利用纯java的技术对XML文档实现解析,生成,序列化以及多种操作.它是直接为java编程服务,利用java语言的特性(方法重载,集合 ...

随机推荐

  1. http://blog.csdn.net/xiamizy/article/details/40781939

    http://blog.csdn.net/xiamizy/article/details/40781939

  2. 解决版本冲突-使用SVN主干与分支功能

    解决版本冲突-使用SVN主干与分支功能 1  前言 大多数产品开发存在这样一个生命周期:编码.测试.发布,然后不断重复.通常是这样的开发步骤: 1)    开发人员开发完毕某一版本(如版本A)功能后, ...

  3. 构建ASP.NET MVC5+EF6+EasyUI 1.4.3+Unity4.x注入的后台管理系统

    开篇:从50开始系统已经由MVC4+EF5+UNITY2.X+Quartz 2.0+easyui 1.3.4无缝接入 MVC5+EF6+Unity4.x+Quartz 2.3 +easyui 1.4. ...

  4. 在eclipse中调试web项目的时候如何把web项目分配给配置好的服务器

    举个例子,我今天在做spring和struts2整合的例子 新建项目blk 1.配置好web.xml,struts.xml,applicationContext.xml,写好jsp页面 2.把stru ...

  5. java.lang.NoSuchFieldError: VERSION_2_3_0 报错解决方案

    java.lang.NoSuchFieldError: VERSION_2_3_0 at org.apache.struts2.views.freemarker.FreemarkerManager.c ...

  6. Top 10 steps to optimize data access in SQL Server

    2009年04月28日 Top 10 steps to optimize data access in SQL Server: Part I (use indexing) 2009年06月01日 To ...

  7. [HIHO1041]国庆出游(DFS, bitset)

    题目链接:http://hihocoder.com/problemset/problem/1041 学会了用C++的bitset哈,可喜可贺.以后遇到超过64位想用位来表示状态就不愁了哈. 这题用bi ...

  8. HDFS的基本shell操作,hadoop fs操作命令

    (1)分布式文件系统 随着数据量越来越多,在一个操作系统管辖的范围存不下了,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,因此迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管 ...

  9. jQuery1.9+中删除了live以后的替代方法

    .live() removed The .live() method has been deprecated since jQuery 1.7 and has been removed in 1.9. ...

  10. 多个MapReduce作业相互依赖时,使用JobControl进行管理

    要处理复杂关系的数据,一个工程里面绝对不止一个MapReduce作业,当有多个MapReduce作业时,       并且每个作业之间有依赖关系,所谓的依赖就是一个作业得到的结果是另外一个作业的输入, ...