定义以下类:

class A{
public:
    A(): A(0) {    }
    A(int i){
        cout << "A(" << i << ")" << endl;
    };
    A(int i, int j){
        cout << "A("<< i << ", " << j << ")" << endl;
    }
};

以下是主函数的内容,求输出结果。

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类型对象。

要特别注意的是最后两处用法,一个是逗号表达式,一个是函数声明。

输出结果为:

A(0)
A(2)
A(3)
A(5)
A(4, 5)
A(7)
最后修改:2018 年 04 月 08 日
如果觉得我的文章对你有用,请随意赞赏