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. linux驱动分离分层的概念

    这个分离分层的概念和输入子系统有点像,但不是完全一样的.为什么会再弄一个这个模型出来我也没有搞懂,现在我的学习还停留在把知识学懂的层面上.至于为什么会产生这种知识,现在我还无从解释,还需时日成长. 这 ...

  2. swift:创建滚动视图的图片轮播器

    用swift创建图片轮播器和用OC创建的方式是一样的,都主要用到UIScrollView和UIImageview这两个控件,有几张图片,就将滚动视图的内容区域大小设置为每一张图片的大小乘以张数即可.然 ...

  3. 解决COS、FileUpload上传文件时中文文件名乱码问题

    方法: MultipartParser mp = new MultipartParser(request, 10*1024*1024); mp.setEncoding("GBK") ...

  4. Python—开始编程

    昨天我是在window上运行的Python,而今天我是在Linux上学习Python. 一般Linux上都已经安装了Python,只要我们在终端上输入命令#python,就会进入Python的交互界面 ...

  5. Uubuntu 14.04 LTS反编译apk

    使用apktool反编译apk 1.安装apktool apktool是Google提供的APK编译工具,能够反编译及回编译apk,需要Java环境的支持(在此不再赘述Java的安装与配置,详见< ...

  6. SpringMVC结合ajaxfileupload.js实现文件无刷新上传

    直接看代码吧,注释都在里面 首先是web.xml <?xml version="1.0" encoding="UTF-8"?> <web-ap ...

  7. poj - 2377 Bad Cowtractors&&poj 2395 Out of Hay(最大生成树)

    http://poj.org/problem?id=2377 bessie要为FJ的N个农场联网,给出M条联通的线路,每条线路需要花费C,因为意识到FJ不想付钱,所以bsssie想把工作做的很糟糕,她 ...

  8. Android在OnCreate中获取控件的宽度和高度

    在Android中,有时需要对控件进行测量,得到的控件宽度和高度可以用来做一些计算.在需要自适应屏幕的情况下,这种计算就显得特别重要.另一方便,由于需求的原因,希望一进入界面后,就能得到控件的宽度和高 ...

  9. java连接mysql的一个小例子

    想要用java 连接数据库,需要在classpath中加上jdbc的jar包路径 在eclipse中,Project的properties里面的java build path里面添加引用 连接成功的一 ...

  10. C#判断字符串为空的几种方法和效率判断

    C#判断字符串为空的几种方法和效率判断 string定义 1.1 string str1="":会定义指针(栈),并在内存里划一块值为空的存储空间(堆),指针指向这个空间.1.2 ...