默认构造函数和显式构造函数

Default and explicit constructors

本文关键字:构造函数 默认      更新时间:2023-10-16

我有一个简单的问题。

我能做到吗?

class test {
    int x;
public:
    test();
    test(int x);
};

我主要有:

test t;
t(2);

假设我有一个类测试,首先用默认构造函数声明对象t,然后我想显式修改调用显式构造函数的值。因为我试过了,但没有得到函数(test)(int)的匹配调用,这毫无意义。

您的类声明很好,但是

t(2);

不是构造函数调用,它尝试调用testvoid operator()(int)重载,但没有提供该重载。


你可能只是想写

test t(2);

或者使用编译器生成的赋值运算符

test t;
t = 2; // or t = test(2);

而不是

test t;
t(2);