默认和显式构造函数

达里乌斯·伊努特(Darius Ionut)

我有一个简单的问题。

我可以那样做吗?

class test {
    int x;

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

总的来说,我有:

test t;
t(2);

假设我有一个类测试,首先我使用默认构造函数声明对象t,但随后我想显式修改调用显式构造函数的值。因为我尝试了此操作,但没有获得对函数(test)(int)的匹配调用,所以这没有任何意义。

一切都在流动

您的课程声明很好,但是

t(2);

不是构造函数调用,而是尝试调用的void operator()(int)重载test(未提供)。


你可能只是想写

test t(2);

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

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

代替

test t;
t(2);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

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

显式默认的构造函数做什么?

显式默认模板构造函数

显式删除默认构造函数的目的

隐式与显式默认构造函数调用

C ++ 11:默认构造函数:隐式还是显式?

实现Externalizable时是否需要显式的默认构造函数?

std :: map默认构造函数是否显式?

C ++ 17中的显式默认构造函数

C ++隐式和显式继承构造函数调用

用户定义的构造函数和隐式默认构造函数

具有默认构造函数的VPTR与显式声明的构造函数

使用显式构造函数

显式move构造函数

显式复制构造函数和std :: sort

显式构造函数和static_cast

C ++显式构造函数和强制转换

显式构造函数和嵌套的初始化列表

C ++多重继承和显式构造函数调用

默认构造函数与隐式构造函数

显式默认的默认构造函数被隐式删除,因为 unordered_map 与结构一起用作键

为什么不可能显式地默认具有volatile参数的副本构造函数?

如何应用使默认构造函数有条件显式?

显式调用琐碎的默认构造函数会导致额外的赋值调用

显式初始化没有默认构造函数的成员

为什么clang使用libstdc ++删除包含std :: optional的类型上的显式默认构造函数?

为什么std :: in_place_t的构造函数默认且显式?

对于默认构造函数,未定义隐式超级构造函数Num()。必须定义一个显式构造函数,这背后的逻辑是什么

为什么对隐式和显式删除的move构造函数进行不同的处理?