初始化列表


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; }
posted @ 2019-01-29 21:41  Jary霸  阅读(150)  评论(0编辑  收藏  举报