在1& 2内部,当我们通过返回参考分配?
Class A
{
A& operator= (const A &ax)
{
return *this;
}
}
int main()
{
A a;
A b;
b = a; // -------------- 1
A c = a; // ----------- 2
}
// ---------------------------------------------------------------
下面会有什么区别(指定的返回值)? :
Class A
{
A operator= (const A &ax)
{
return *this;
}
}
int main()
{
A a;
A b;
b = a; // -------------- 3
A c = a; // ----------- 4
}
答案 0 :(得分:0)
还存在一个主要错误,因为public:
设置为私有且代码格式不正确,但可以通过添加operator=
访问修饰符来解决此问题。
b
变量的对象调用 #include <iostream>
class A
{
public:
float a1;
A& operator= (const A &ax)
{
return *this;
}
};
int main()
{
A a;
a.a1 = 3;
A b;
b.a1 = 5;
b = a; // -------------- 1
std::cout << b.a1; // outputs 5
A c = a;
std::cout << c.a1; // outputs 3
}
,因此这种赋值变体根本不应执行赋值。
A c = a;
该行
operator=
被称为初始化,不使用this
,而是使用(由编译器生成)复制构造函数,它执行对象的浅表副本。
你的错误是成员运算符=意味着将其参数的值赋给operator=
。 a=b=c;
返回分配结果,可用于链接:A& A::operator= (const A &right)
A& operator= (A &left, const A &right)
相当于
git cherry-pick