初始化列表
class CExample { public: int a; float b; //构造函数初始化列表,初始化列表先于构造函数进行。 CExample(): a(0),b(8.8) {} //构造函数内部赋值 CExample() { a=0; b=8.8; } };
例子2:
#include<iostream> using namespace std; class Animal { public: int a; int b; Animal(); Animal(int x); }; Animal::Animal(){ cout << "无参Animal" << endl; } Animal::Animal(int x) { cout << "有参Animal" << endl; }
#include<iostream> #include"Animal.h" using namespace std; class Dog:public Animal { public: Dog(); };
// 如果人工写初始化列表,由于是继承,那就默认Dog::Dog(){} <==> Dog::Dog():Animal(){},它会自动加上这个初始化列表,但是如果人工写了初始化列表,那就先传入构造函数的参数
// 再调用人工的初始化列表,再调用构造函数。这就是为什么先调用基类的构造函数,再调用派生类的构造函数
Dog::Dog():Animal(123) {
cout << "dog" <<endl; }