【发布时间】:2011-11-23 00:31:49
【问题描述】:
我不是在询问这种调用的逻辑,而是我对支持 b/w Visual C++ 和 GCC / Clang 的差异感兴趣。 Visual C++ 不允许将对象的新实例用作其自己的复制构造函数的参数。 GCC 和 Clang 允许这样做。考虑到'int i = i;'是允许的,我想知道Visual C++是否有错误。
class test {
private:
test() {}
public:
test(const test& t) {}
};
int main(void) {
int i = i;
test t(t); -- this line gives an error in Visual C++
return 0;
}
【问题讨论】:
-
那么在 GCC 中,先有鸡还是先有蛋?
-
int i = i和test t(t)是完全不同的形式。后者显然是无效的(真的,前者应该也是)。 -
int i = i 是一个赋值,没有复制结构 inoked ..
-
@stijn:
int i=i不是作业。 -
@stijn:这叫做初始化;更准确地说,动态初始化。看到这个:What is dynamic intialization of object in c++?
标签: c++ visual-c++