定义以下类:
1 2 3 4 5 6 7 8 9 10 |
class A{ public: A(): A(0) { } A(int i){ cout << "A(" << i << ")" << endl; }; A(int i, int j){ cout << "A("<< i << ", " << j << ")" << endl; } }; |
以下是主函数的内容,求输出结果。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
int main(){ A a1; A a2(2); A a3 = A(3); A a4 = (5); A a5(4, 5); A a6 = (6, 7); // comma express A a7(); return 0; } |
解析
A a1; // 声明一个对象 a1,调用默认构造函数。
A a2(2); // 声明对象 a2,调用有参构造函数。
A a3 = A(3); // 声明对象 a3,调用有参构造函数。
A a4 = (5); // 同上,调用有参构造函数。
A a5(4, 5); // 调用两个参数的构造函数。
A a6 = (6, 7); // 调用一个参数的构造函数,右边只是一个逗号表达式。
A a7(); // 声明一个函数 a7,它的返回值是一个 A 类型对象。
要特别注意的是最后两处用法,一个是逗号表达式,一个是函数声明。
输出结果为:
1 2 3 4 5 6 |
A(0) A(2) A(3) A(5) A(4, 5) A(7) |
评论