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

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

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. html设备监控系统模板,蓝色的远程监控设备系统后台管理界面模板
  2. 在计算机系统中使用防病毒软件的作用,防病毒软件的作用是 江苏省网络与信息安全技能竞赛题库(5)...
  3. SAP Spartacus url里默认electronics-spa的由来
  4. 【Python CheckiO 题解】Feed Pigeons
  5. php的memcache安装,在window10下面
  6. 实战:基于RabbitMQ的TTL以及死信队列,实现延迟付款,手动补偿案例
  7. 如何应对团购鼻祖Groupon的“***”
  8. Atitit 高等教育 中产教育 普通教育的异同 目录 1. 顶层精英教育 1 1.1. 领导力 影响力 1 1.2. 国王规范 1 1.3. 宗教领袖 1 1.4. 决策能力 1 1.5. 国际视
  9. 一键获取阿里巴巴主图视频细节图评论图的步骤
  10. 电信光猫华硕路由器端口转发
  11. html5shiv.min.js 有什么作用呢?
  12. 艺术范,技术芯——读达芬奇有感
  13. 蓝牙sbc怎么解决_谈一谈蓝牙协议?
  14. Python Qt GUI设计:做一款串口调试助手(实战篇—1)
  15. 多线程_12_优先级
  16. 《如何启动黄金圈思维》苹果和微软都在用的“思维模型”
  17. 计算机网络-数据链路层(广域网及相关协议(PPP协议帧格式,HDLC协议)数据链路层设备(网桥,交换机))
  18. 农民工自学java到找到工作的前前后后
  19. IDEA使用java开发时一个奇葩问题
  20. java ee jar_javaee.jar下载

热门文章

  1. 机器学习中的维度灾难
  2. 【远程操控】Pycharm配置远程连接服务器
  3. VTK修炼之道64:纹理映射体绘制_三维纹理映射
  4. C#中深拷贝对象的简单方法
  5. 动态加载JS脚本的4种方法
  6. 23种设计模式C++源码与UML实现--策略模式
  7. 信号的高级特性-核心转储文件
  8. Makefile的重建与include指令
  9. JVM_06 垃圾回收相关算法 [ 一 ]
  10. 记录一次Socket异常:java.net.SocketException: Connection reset