【发布时间】:2017-10-20 19:54:49
【问题描述】:
当使用默认构造函数参数调用构造函数时,不会构造任何对象。
class cl{
private:
public:
cl(){cout << "Default used" << endl;};
cl(const cl & cl_object) {cout << "Copy used" << endl;};
cl & operator=(const cl & cl_object){cout << "Assignment used" << endl; return *this;};
};
当我写作时:
cl(cl());
没有消息显示。
问题: 1)为什么没有构造对象? 2) 为什么不使用复制构造函数?
【问题讨论】:
-
@NathanOliver 你能解释一下这是怎么重复的吗?
-
就像答案所说,
cl(cl());声明了一个函数。因为它是一个函数而不是一个变量,所以你不会看到任何构造函数调用,因为你不构造任何东西。 -
@NathanOliver 所以如果我使用 cl() 正确理解它;只构造一个对象但使用 cl(cl());声明一个函数。但是如果它声明了一个函数,编译器不应该输出一个错误,因为我没有指定返回类型吗?
标签: c++ class oop constructor