c++使用初始化列表来初始化字段
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | #include<iostream> using namespace std; class Student1 { private : int _a; int _b; public : void fprint() { cout << " a = " << _a << " " << "b = " << _b << endl; } //Student1(int i):b(i),a(b){ } //异常顺序:发现a的值为0 b的值为2 说明初始化仅仅对b有效果,对a没有起到初始化作用 Student1( int a, int b): _a(a), _b(b) { cout << "constructor" << endl; } //正常顺序:发现a = b = 2 说明两个变量都是初始化了的 Student1() // 无参构造函数 { cout << "默认构造函数Student1" << endl ; } Student1( const Student1 &t1) //拷贝构造函数 { cout << "拷贝构造函数Student1" << endl ; this ->_a = t1._a; this ->_b = t1._b; } Student1 & operator = ( const Student1 &t1) // 赋值运算符 { cout << "赋值函数Student1" << endl ; this ->_a = t1._a ; this ->_b = t1._b ; return * this ; } }; class Teacher { public : Student1 test; //类中包含类 Teacher(Student1 &t1) { test = t1 ; } }; int main( void ) { Student1 A(2,4); //进入默认构造函数 Teacher B(A); //进入拷贝构造函数 A.fprint(); //输出前面初始化的结果 B.test.fprint(); } |
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步