C++将类的构造函数、析构函数声明为private或者protected的用途
如果将构造函数、析构函数声明为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的用途相关推荐
- C++构造函数/析构函数 设置成private的原因
C++构造函数/析构函数 设置成private的原因 标签(空格分隔): c/c++ 将构造函数,析构函数声明为私有和保护的,那么对象如何创建? 已经不能从外部调用构造函数了,但是对象必须被构造,应该 ...
- 基类的析构函数不能被继承。_为什么要把C++类中的析构函数声明为虚函数?
如题,当一个类为基类的时候,通常其析构函数被声明为虚函数,这是为啥? class BaseCls { public: BaseCls() { printf("BaseCls()n" ...
- 类的访问权限-public、private、protected
访问权限 protected(保护)访问权限 为什么要使用protected访问权限? 子类的成员函数中,不能直接访问父类的private成员,已经这些成员已经被继承下来了,但是却不能访问. 只有通过 ...
- C++中基类与派生类的构造函数和析构函数
1.Cpp中的基类与派生类的构造函数 基类的成员函数可以被继承,可以通过派生类的对象访问,但这仅仅指的是普通的成员函数,类的构造函数不能被继承.构造函数不能被继承是有道理的,因为即使继承了,它的名字和 ...
- C++ 基类和派生类的构造函数
在设计派生类时,对继承过来的成员变量的初始化工作也要由派生类的构造函数完成,但是大部分基类都有 private 属性的成员变量,它们在派生类中无法访问,更不能使用派生类的构造函数来初始化. 解决办法: ...
- C++基类和派生类的构造函数(二)
基类构造函数调用规则 事实上,通过派生类创建对象时必须要调用基类的构造函数,这是语法规定.换句话说,定义派生类构造函数时最好指明基类构造函数:如果不指明,就调用基类的默认构造函数(不带参数的构造函数) ...
- 类的构造函数和析构函数详解
一:类的构造函数 1.构造函数定义 类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行. 构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void.构造函数可 ...
- 为什么构造函数不能声明为虚函数,析构函数可以,构造函数中为什么不能调用虚函数?
为什么构造函数不能声明为虚函数,析构函数可以,构造函数中为什么不能调用虚函数 构造函数中为什么不能调用虚函数? 第一个理由是概念上的 第二个理由是机械上的. 构造函数不能声明为虚函数的原因是 1 构造 ...
- C++派生类的构造函数和析构函数
C++派生类的构造函数和析构函数 派生类的构造函数和析构函数 #include <iostream> using namespace std; class student { public ...
最新文章
- 有了链路日志增强,排查Bug小意思啦!
- Datawhale来厦大啦!
- angularjs 元素重复指定次数_5.2 设置循环次数:for +range 句式
- 存储过程和函数的区别?
- Ajax学习笔记-JQuery中的Ajax
- IEC61850 总结
- iOS开发 ☞ 系统自带字体
- XRD测试的68个问题(三)
- 汇编语言c标志位减法,5.2.3-2减法指令 - 汇编语言教程
- mmsi是代表船舶什么_海上移动业务识别码(MMSI)是一种九位识别码,主要分配给()在DSC和NBDP通信中相互识别身份是使用。...
- 任强-京东智能云服务平台
- 在成都,30岁的人最焦虑
- 论文学习记录20200306:时序数据聚合[NDSS2011]
- 什么是用户画像?该怎么分析?
- Python学习:python time模块之time.mktime()
- UIKeyboardTypeNumberPad和丢失的return键
- 轻微课学画画好不好:我的体验反馈
- ubuntu 设置背景色为豆沙绿
- 使用OLAMI自然语言开放平台提供的API接口制作自己的语音助手
- Google Play第一次发布的应用商店看不到