构造函数必须是public吗_c++ 构造函数,析构函数必须要给成公有的吗?
这是一道面试题,记得当时回答的并不好,因为我们对构造函数经常使用,例如单例模式下构造函数我们会声明为私有的,其他情况下构造函数我们都会声明为公有的,但是析构函数是否必须声明为公有的,还真没注意。下面我们就一起学习下。
(一)一个类的析构函数只能有一个,也不能重载
1.类的析构函数,是在对象的生命周期结束后,由系统自动调用的。
2.该函数不需任何参数,不需要传入任何参数,如果非要写一个带参数的析构函数,则会造成编译器的抱怨,造成二义性,这一点和够赞函数不同,构造函数可以根据传入的参数,选择合适的构造函数。构造函数可以显示调用,而析构函数系统负责调用,程序无法控制其调用时机。
(二)构造函数,析构函数必须是公有的吗?
1.析构函数必须给成公有的,因为对象生命周期结束后,系统会调用,如果不是公有的则会引发错误
2.构造函数可以是公有的,私有的,保护的
#include class Test{private:double num;Test(double d){num = d;}//~Test(){} 系统报错public:Test(int n){num = n;}~Test(){}};void Test:: InnerCreate(){ Test inner(3.14);//调用私有的构造函数}int main(){ Test obj(0);//调用公有的构造函数 obj.InnerCreate(); return 0;}
![](/assets/blank.gif)
构造函数必须是public吗_c++ 构造函数,析构函数必须要给成公有的吗?相关推荐
- c构造函数和析构函数_C ++构造函数和析构函数| 查找输出程序| 套装1
c构造函数和析构函数 Program 1: 程序1: #include <iostream> using namespace std; class Sample { private: in ...
- c构造函数和析构函数_C ++构造函数,析构函数能力问题和答案(第2组)
c构造函数和析构函数 C ++构造函数和析构函数能力问题列表 (List of C++ Constructor and Destructor Aptitude Questions & Answ ...
- 构造函数不可以是虚函数;析构函数可以是虚函数,也可以是纯虚函数。
构造函数不可以是虚函数:析构函数可以是虚函数,也可以是纯虚函数. 一:构造函数不能声明为虚函数的原因 1 构造一个对象的时候,必须知道对象的实际类型,而虚函数行为是在运行期间确定实际类型的. 而在构造 ...
- C++继承中构造函数、析构函数调用顺序及虚析构函数
首先说说构造函数,大家都知道构造函数里就可以调用成员变量,而继承中子类是把基类的成员变成自己的成员,那么也就是说子类在构造函数里就可以调用基类的成员了,这就说明创建子类的时候必须先调用基类的构造函数, ...
- 为什么构造函数不能声明为虚函数,析构函数可以,构造函数中为什么不能调用虚函数?
为什么构造函数不能声明为虚函数,析构函数可以,构造函数中为什么不能调用虚函数 构造函数中为什么不能调用虚函数? 第一个理由是概念上的 第二个理由是机械上的. 构造函数不能声明为虚函数的原因是 1 构造 ...
- 不存在从node到node*的适当转换函数_C++构造函数和初始化表
构造函数和初始化表 1 构造函数 当类对象被创建时,编译系统对象分配内存空间,并自动调用该构造函数,由构造函数完成成员的初始化工作,因此构造函数的作用是初始化对象的数据成员. 2 构造函数可以重载 构 ...
- c++ loadlibrary 初始化对象_C++构造函数和初始化表
构造函数和初始化表 1 构造函数 当类对象被创建时,编译系统对象分配内存空间,并自动调用该构造函数,由构造函数完成成员的初始化工作,因此构造函数的作用是初始化对象的数据成员. 2 构造函数可以重载 构 ...
- c++的构造函数极其调用(无参构造函数,有参构造函数,拷贝构造函数)
1.c++编译器会自动调用构造函数 //构造函数(与类名相同) //析构函数:没有参数也没有任何返回类型,被自动调用 #include<iostream> using namespace ...
- php构造函数里抛出异常_php-在类的构造函数中返回值
php-在类的构造函数中返回值 到目前为止,我有一个带有构造函数的29447791671682017201728类 public function __construct ($identifier = ...
最新文章
- html设备监控系统模板,蓝色的远程监控设备系统后台管理界面模板
- 在计算机系统中使用防病毒软件的作用,防病毒软件的作用是 江苏省网络与信息安全技能竞赛题库(5)...
- SAP Spartacus url里默认electronics-spa的由来
- 【Python CheckiO 题解】Feed Pigeons
- php的memcache安装,在window10下面
- 实战:基于RabbitMQ的TTL以及死信队列,实现延迟付款,手动补偿案例
- 如何应对团购鼻祖Groupon的“***”
- Atitit 高等教育 中产教育 普通教育的异同 目录 1. 顶层精英教育	1 1.1. 领导力 影响力	1 1.2. 国王规范	1 1.3. 宗教领袖	1 1.4. 决策能力	1 1.5. 国际视
- 一键获取阿里巴巴主图视频细节图评论图的步骤
- 电信光猫华硕路由器端口转发
- html5shiv.min.js 有什么作用呢?
- 艺术范,技术芯——读达芬奇有感
- 蓝牙sbc怎么解决_谈一谈蓝牙协议?
- Python Qt GUI设计:做一款串口调试助手(实战篇—1)
- 多线程_12_优先级
- 《如何启动黄金圈思维》苹果和微软都在用的“思维模型”
- 计算机网络-数据链路层(广域网及相关协议(PPP协议帧格式,HDLC协议)数据链路层设备(网桥,交换机))
- 农民工自学java到找到工作的前前后后
- IDEA使用java开发时一个奇葩问题
- java ee jar_javaee.jar下载