这是一道面试题,记得当时回答的并不好,因为我们对构造函数经常使用,例如单例模式下构造函数我们会声明为私有的,其他情况下构造函数我们都会声明为公有的,但是析构函数是否必须声明为公有的,还真没注意。下面我们就一起学习下。

(一)一个类的析构函数只能有一个,也不能重载

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;}

构造函数必须是public吗_c++ 构造函数,析构函数必须要给成公有的吗?相关推荐

  1. c构造函数和析构函数_C ++构造函数和析构函数| 查找输出程序| 套装1

    c构造函数和析构函数 Program 1: 程序1: #include <iostream> using namespace std; class Sample { private: in ...

  2. c构造函数和析构函数_C ++构造函数,析构函数能力问题和答案(第2组)

    c构造函数和析构函数 C ++构造函数和析构函数能力问题列表 (List of C++ Constructor and Destructor Aptitude Questions & Answ ...

  3. 构造函数不可以是虚函数;析构函数可以是虚函数,也可以是纯虚函数。

    构造函数不可以是虚函数:析构函数可以是虚函数,也可以是纯虚函数. 一:构造函数不能声明为虚函数的原因 1 构造一个对象的时候,必须知道对象的实际类型,而虚函数行为是在运行期间确定实际类型的. 而在构造 ...

  4. C++继承中构造函数、析构函数调用顺序及虚析构函数

    首先说说构造函数,大家都知道构造函数里就可以调用成员变量,而继承中子类是把基类的成员变成自己的成员,那么也就是说子类在构造函数里就可以调用基类的成员了,这就说明创建子类的时候必须先调用基类的构造函数, ...

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

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

  6. 不存在从node到node*的适当转换函数_C++构造函数和初始化表

    构造函数和初始化表 1 构造函数 当类对象被创建时,编译系统对象分配内存空间,并自动调用该构造函数,由构造函数完成成员的初始化工作,因此构造函数的作用是初始化对象的数据成员. 2 构造函数可以重载 构 ...

  7. c++ loadlibrary 初始化对象_C++构造函数和初始化表

    构造函数和初始化表 1 构造函数 当类对象被创建时,编译系统对象分配内存空间,并自动调用该构造函数,由构造函数完成成员的初始化工作,因此构造函数的作用是初始化对象的数据成员. 2 构造函数可以重载 构 ...

  8. c++的构造函数极其调用(无参构造函数,有参构造函数,拷贝构造函数)

    1.c++编译器会自动调用构造函数 //构造函数(与类名相同) //析构函数:没有参数也没有任何返回类型,被自动调用 #include<iostream> using namespace ...

  9. php构造函数里抛出异常_php-在类的构造函数中返回值

    php-在类的构造函数中返回值 到目前为止,我有一个带有构造函数的29447791671682017201728类 public function __construct ($identifier = ...

最新文章

  1. 更换ip软件安卓_2019十大手机读书软件排行榜
  2. 听说你,对薪酬待遇不太满意。。。
  3. 小电商的延时队列设计概要
  4. Redis学习(一)——
  5. c++ createtoolhelp32snapshot取进程路径_理解进程和线程
  6. 数据结构学习笔记(树、二叉树)
  7. C语言学习之 数组,指针,字符串. (一)
  8. python之list与set的区别
  9. 数字反转(NOIP2011 普及组第一题)
  10. 数据库程序设计复习资料
  11. Android网络课程笔记-----完善GoogleStyleApp框架结构
  12. 计算机毕业论文选题管理系统的设计与实现
  13. 兀键和6键怎么判断_高中有机化学大兀键怎么判断电子数和参与成键的原子数?...
  14. 手机通过IPV6访问电脑共享文件
  15. 等额本息还款和等额本金还款计算公式的推导
  16. 天创速盈:拼多多低价引流怎么玩?大部分中小卖家都不知道
  17. ITSM | 权威指南发布,高速IT服务管理团队是什么样子的?
  18. 如何运营一家数据标注公司 (基础架构篇)
  19. C语言过时了?扯淡!
  20. 初等行变换、初等列变换

热门文章

  1. dcmtk程序包综述(1)
  2. 增加话务系统功能感想
  3. 数据可视化组队学习:《Task05 - 样式色彩秀芳华》笔记
  4. Adversarial Validation 微软恶意代码比赛的一个kenel的解析
  5. 使用汇编软件emu8086输出十次Hello World!
  6. docker基础介绍
  7. C 语言运算符优先级
  8. Linux bzip2/gzip/zip/tar 命令详解
  9. 「 每日一练,快乐水题 」2016. 增量元素之间的最大差值
  10. C语言再学习 -- 时间函数