• 【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.
  • 相关阅读:
    xp系统
    如何进去bios设置
    MySQL快捷键
    显示数据库中的所有表和所有数据库
    Codeforces Round #375 (Div. 2) B
    Codeforces Round #375 (Div. 2) A
    2015 AlBaath Collegiate Programming Contest B
    2015 AlBaath Collegiate Programming Contest A
    AIM Tech Round 3 (Div. 2) B
    AIM Tech Round 3 (Div. 2) A
  • 原文地址:https://www.cnblogs.com/igloo1986/p/2889133.html
Copyright © 2020-2023  润新知