默认和显式构造函数

时间:2016-04-16 17:19:55

标签: c++ class

我有一个简单的问题。

我能这样做吗?

class test {
    int x;

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

主要是我:

test t;
t(2);

Supose我有一个类测试,首先我使用默认构造函数声明对象t,但后来我想显式修改调用显式构造函数的值。 因为我试过这个并且我没有得到函数(test)(int)的匹配调用,这没有任何意义。

1 个答案:

答案 0 :(得分:0)

你的班级声明没问题,但是

t(2);

不是构造函数调用,它会尝试调用void operator()(int)的{​​{1}}重载,但不提供。{1}}。

你可能只是想写

test

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

test t(2);

而不是

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