构造函数私有化的作用以及私有继承

来源:互联网 发布:零基础sql注入书籍 编辑:程序博客网 时间:2024/05/22 05:11

1. 将default构造函数声明为私有化

作用1: 只允许类内部进行初始化(singleton模式)

#include "iostream"using namespace std;class Base {private:Base() {}Base(const Base&) {}Base& operator=(const Base&){}static Base* object_base;public:static Base* GetInstance() {if (object_base == NULL) {object_base = new Base();cout << "object created" << endl;}else {cout << "object exist" << endl;}return object_base;}};Base * Base::object_base = NULL; //类静态成员变量必须在类外初始化,并且不带staticint _tmain(int argc, _TCHAR* argv[]){Base* base = Base::GetInstance();return 0;}

作用2: 防止函数调用中的值传递


2. 将copy构造函数和copy assignment操作符私有化

作用: 拒绝class的拷贝和赋值动作

- 进一步为了防止自身member函数和friend函数调用私有的copy构造函数和copy assignment操作符,可以在声明私有的同时,不定义其实现.那么在发生调用之后,会报链接error.

- 为了实现上述目的,还可以私有继承一个含有私有构造函数的基类,这样子类不声明任何构造函数的时候,编译器生成的自动版本构造函数,会尝试调用基类的对应构造函数,因而被拒绝.

0 0
原创粉丝点击