C++ 构造函数问题


初始化列表:

与其他函数不同,构造函数除了有名字,参数列表和函数体之外,还可以有初始化列表,初始化列表以冒号开头,后跟一系列以逗号分隔的初始化字段。

class foo
{
  public:
    foo(string s, int i):name(s), id(i){} ; // 初始化列表
  private:
    string name ;int id ;
};

从概念上来讲,构造函数的执行可以分成两个阶段, 初始化阶段 计算阶段 ,初始化阶段先于计算阶段

初始化阶段

    所有类类型(class type)的成员都会在初始化阶段初始化,即使该成员没有出现在构造函数的初始化列表中

计算阶段

    一般用于执行构造函数体内的赋值操作。

构造方法:

如果一个类Base在另一个类Delete中作为一个 成员进行声明,则在Delete类调用构造方法时 的 “初始化阶段” 就会调用Base 的无参构造方法。

另:通过 new 得到的是这个类 的实例 的地址!所以必须要由指针接收!


猜你喜欢

转载自blog.csdn.net/xzx735/article/details/34144249