类 .xml
类
所有的类 都只有一个析构函数和赋值函数 但可以有多个构造函数 对于任意类,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 私有化拷贝构造函数 预防默认拷贝
防止 初始化、值传递、返回值时发生拷贝构造函数
本文使用 书画小说软件 发布,内容与软件无关,书画小说软件 更惬意的读、更舒心的写、更轻松的发布。

浙公网安备 33010602011771号