初始化列表
类名::类名(形参1,形参2,...形参n):数据成员1(形参1),数据成员2(形参2),...,数据成员n(形参n)
{
...
}
规则1,初始化列表进行数据成员的初始化
规则2,初始化列表进行父类的初始化
1 #include <iostream> 2 using namespace std; 3 4 class A 5 { 6 private: 7 int i; 8 public: 9 A(int ii) :i(ii)//初始化列表 10 { 11 std::cout << "A::A()" << std::endl; 12 } 13 ~A() 14 { 15 std::cout << "~A::A()" << std::endl; 16 } 17 void print() 18 { 19 std::cout << "A::print()" << i << std::endl; 20 } 21 22 void print(int i) 23 { 24 std::cout << i << std::endl; 25 print(); 26 } 27 28 void set(int ii) 29 { 30 i = ii; 31 } 32 }; 33 34 class B :public A 35 { 36 public: 37 B() :A(15) 38 { 39 std::cout << "B::B()" << std::endl; 40 } 41 ~B() 42 { 43 std::cout << "B::~B()" << std::endl; 44 } 45 void print() 46 { 47 std::cout << "B::print()" << std::endl; 48 } 49 void f() 50 { 51 set(20); 52 print(); 53 } 54 }; 55 56 void main() 57 { 58 B b; 59 b.set(10); 60 b.print(); 61 b.f(); 62 b.A::print(200); 63 64 system("pause"); 65 }
派生类与基类都定义有构造函数时,则编译器先调用基类的构造函数,如有对象成员则执行对象成员的构造函数,最后是派生类的构造函数。析构函数与构造函数完全相反的顺序。
时间: 2024-10-18 11:58:55