【c++】关于默认构造函数
本文参考了 侯捷译的 <inside the c++ object model>~~
四种情况下,c++会为class A创建默认构造函数,分别是
1. 类A中包含带有构造函数的成员数据B~
1 #include <iostream> 2 3 4 using namespace std; 5 6 class Foo 7 { 8 public: 9 Foo() 10 { 11 cout<<"A construct func called"<<endl; 12 }; 13 }; 14 15 class Bar 16 { 17 private: 18 Foo foo; 19 }; 20 21 22 int main() 23 { 24 Bar bar; 25 return 0; 26 }
2. 类A的基类中包含构造函数~
1 #include <iostream> 2 3 4 using namespace std; 5 6 class Foo 7 { 8 public: 9 Foo() 10 { 11 cout<<"A construct func called"<<endl; 12 }; 13 }; 14 15 class Bar : public Foo 16 { 17 private: 18 int trival; 19 }; 20 21 22 int main() 23 { 24 Bar bar; 25 return 0; 26 }
3. A中有成员虚函数或者基类中有成员虚函数~
4. A虚继承了别的类~
两个误解:
1. 任何class,如果没有显式定default constructor,就会被合成出一个来【上诉四种情况之一才会被构造】
2. 编译器合成出来的default constructor 会明确的设定 class内每一个data member的默认值
喜欢一起简单,实用的东西,拒绝复杂花哨,我不是GEEK.
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步