如果将构造函数、析构函数声明为private或者protected,表示不能从类的外部正常调用构造和析构函数了。

这种用法的通常使用的场景如下:

1、如果不想让外面的用户直接构造一个类A的对象,而希望用户只能构造这个类A的子类,那就把这个类A的构造函数、析构函数声明为protected,而将类A子类的构造函数和析构函数声明为public。例如:

class A
{ protected: A(){}public: ....
};
calss B : public A
{ public: B(){}....
};A a; // error
B b; // ok

2、如果将构造函数、析构函数声明为private,那只能在这个类的成员内构造这个类的对象了。class A{
private:A(){  }~A(){ }public:void Instance()//类A的内部的一个函数{A a;}

  static A& GetInstance()    {          static A a;          return a;    }
};

转载于:https://www.cnblogs.com/guagua2016/p/5958270.html

C++将类的构造函数、析构函数声明为private或者protected的用途相关推荐

  1. C++构造函数/析构函数 设置成private的原因

    C++构造函数/析构函数 设置成private的原因 标签(空格分隔): c/c++ 将构造函数,析构函数声明为私有和保护的,那么对象如何创建? 已经不能从外部调用构造函数了,但是对象必须被构造,应该 ...

  2. 基类的析构函数不能被继承。_为什么要把C++类中的析构函数声明为虚函数?

    如题,当一个类为基类的时候,通常其析构函数被声明为虚函数,这是为啥? class BaseCls { public: BaseCls() { printf("BaseCls()n" ...

  3. 类的访问权限-public、private、protected

    访问权限 protected(保护)访问权限 为什么要使用protected访问权限? 子类的成员函数中,不能直接访问父类的private成员,已经这些成员已经被继承下来了,但是却不能访问. 只有通过 ...

  4. C++中基类与派生类的构造函数和析构函数

    1.Cpp中的基类与派生类的构造函数 基类的成员函数可以被继承,可以通过派生类的对象访问,但这仅仅指的是普通的成员函数,类的构造函数不能被继承.构造函数不能被继承是有道理的,因为即使继承了,它的名字和 ...

  5. C++ 基类和派生类的构造函数

    在设计派生类时,对继承过来的成员变量的初始化工作也要由派生类的构造函数完成,但是大部分基类都有 private 属性的成员变量,它们在派生类中无法访问,更不能使用派生类的构造函数来初始化. 解决办法: ...

  6. C++基类和派生类的构造函数(二)

    基类构造函数调用规则 事实上,通过派生类创建对象时必须要调用基类的构造函数,这是语法规定.换句话说,定义派生类构造函数时最好指明基类构造函数:如果不指明,就调用基类的默认构造函数(不带参数的构造函数) ...

  7. 类的构造函数和析构函数详解

    一:类的构造函数 1.构造函数定义 类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行. 构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void.构造函数可 ...

  8. 为什么构造函数不能声明为虚函数,析构函数可以,构造函数中为什么不能调用虚函数?

    为什么构造函数不能声明为虚函数,析构函数可以,构造函数中为什么不能调用虚函数 构造函数中为什么不能调用虚函数? 第一个理由是概念上的 第二个理由是机械上的. 构造函数不能声明为虚函数的原因是 1 构造 ...

  9. C++派生类的构造函数和析构函数

    C++派生类的构造函数和析构函数 派生类的构造函数和析构函数 #include <iostream> using namespace std; class student { public ...

最新文章

  1. 有了链路日志增强,排查Bug小意思啦!
  2. Datawhale来厦大啦!
  3. angularjs 元素重复指定次数_5.2 设置循环次数:for +range 句式
  4. 存储过程和函数的区别?
  5. Ajax学习笔记-JQuery中的Ajax
  6. IEC61850 总结
  7. iOS开发 ☞ 系统自带字体
  8. XRD测试的68个问题(三)
  9. 汇编语言c标志位减法,5.2.3-2减法指令 - 汇编语言教程
  10. mmsi是代表船舶什么_海上移动业务识别码(MMSI)是一种九位识别码,主要分配给()在DSC和NBDP通信中相互识别身份是使用。...
  11. 任强-京东智能云服务平台
  12. 在成都,30岁的人最焦虑
  13. 论文学习记录20200306:时序数据聚合[NDSS2011]
  14. 什么是用户画像?该怎么分析?
  15. Python学习:python time模块之time.mktime()
  16. UIKeyboardTypeNumberPad和丢失的return键
  17. 轻微课学画画好不好:我的体验反馈
  18. ubuntu 设置背景色为豆沙绿
  19. 使用OLAMI自然语言开放平台提供的API接口制作自己的语音助手
  20. Google Play第一次发布的应用商店看不到

热门文章

  1. k8s edit命令使用示例
  2. Python Django的分页插件使用示例
  3. Linux shell接收用户的输入
  4. nginx 配置文件nginx.conf结构
  5. springboot 定时任务注入线程池
  6. 【学亮IT手记】PL/SQL编程-存储过程
  7. 虚拟内存越大越好吗_滤波电容越大越好吗?
  8. 如何设置电脑自动锁屏_工信部重要提醒:赶紧设置这个密码!手机丢时也不怕损失!...
  9. RocketMQ 报 invokeSync call timeout
  10. myeclipse中,项目上有个叉报错,文件没有错误