gpt4 book ai didi

c++ - 混淆类的成员复制

转载 作者:行者123 更新时间:2023-11-30 02:07:54 26 4
gpt4 key购买 nike

学习了C++中的成员复制和赋值运算符后,并查看“member copying of class”,它解释了无法生成默认赋值运算符的条件。我对这些概念不是很清楚,因为我尝试的以下示例实际上适用于 g++4.5

#include<iostream>
using namespace std;

class Y{
int& x;
const int cx;
public:
Y(int v1,int v2)
:x(v1),cx(v2)
{}
int getx(){return x;}
int getcx(){return cx;}
};

int main()
{
int a = 10;
Y y1(a,a);
Y y2 = y1;//assignment
cout<<y1.getx()<<" "<<y1.getcx();
return 0;
}

那么我哪里没有理解这些概念。请提出其他示例(如果可能)以便我更好地理解。

最佳答案

Y y2 = y1; 不是赋值。这是一个复制构造函数调用。如果你在同一行声明和初始化一个变量,一个单参数构造函数被调用,等号右边作为参数。 Y 没有任何东西可以阻止实例化(和调用)默认复制构造函数。

尝试以下操作:

Y y1(10, 10);
Y y2(11, 11);
y2 = y1;

这应该会失败,尽管我现在无法测试它。

关于c++ - 混淆类的成员复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7438509/

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