gpt4 book ai didi

c++ - 关于带有复制构造函数的 vs/g++

转载 作者:行者123 更新时间:2023-11-30 03:02:49 25 4
gpt4 key购买 nike

我正在尝试在 Visual Studio (2008) 和 g++ 中编译代码。
在vs2008中成功,在g++中报错。
如果添加 const,
测试(const test &source):a(source.a){}
g++会编译成功。
我知道 test aa = 2; 会创建一个临时对象并调用复制构造函数。
临时对象不能绑定(bind)到非常量引用
那么,为什么vs2008可以编译成功呢?

class test{  
public:
test():a(1) {}
test(int num):a(num) {}
test(test &source):a(source.a) {}
private:
int a;
};

int main(){
test aa = 2;
return 0;
}

最佳答案

不幸的是,VS 有一个允许它的非标准扩展。

有一个编译器标志可以禁用扩展,但最后我检查了它也使得无法使用标准库。最好的办法是将警告级别保持在 4(尽管这种特殊情况不会收到警告),并尽可能使用多个编译器检查您的编译。

关于c++ - 关于带有复制构造函数的 vs/g++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9858551/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com