在类外重载赋值运算符
Overloading Assignment operator outside of class
我一直在尝试使用朋友类重载类外的赋值运算符,但无论我做什么都不起作用。(是的,我知道约定是重载类中的运算符(。以下是我为使其工作所做的示例:
class Person{
public:
Person(string n){
name = n;
}
friend class assignment;
name = "Joe";
}
}
class assignment{
public:
Person operator&(Person &rhs){
Person test;
test.name = rhs.name;
return test; //return *this doesn't work
}
}
无论我做什么,赋值运算符都不会在 main 中运行/返回:
Person one("Joe")
person two("Martin");
person three("Anna")
two = three;
std::cout<<two.name; //does not equal the member variable of three;
忽略代码并切入问题的核心,如评论中所述:我只是想知道是否可以在类外运算符重载赋值运算符。 答案是否定的。
[class.copy.assign]明确禁止这样做。我目前手头只有 n4618,所以这就是我要引用的:
用户声明的复制赋值运算符
X::operator=
是类X
的非静态非模板成员函数,只有一个类型为X
、X&
、const X&
、volatile X&
或const volatile X&
的参数。
你可以做各种各样的事情来解决这个问题,但他们不是赋值运算符。
相关文章:
- 使用赋值运算符重载从类中返回jobject
- 赋值运算符重载和自赋值
- C++ 指针赋值运算符重载(不仅是对象赋值,还有指针赋值)
- 赋值运算符重载在通过指针访问时不调用
- "return *this"赋值运算符重载
- 赋值运算符重载 c++ 的返回值
- 在对类对象的赋值进行链接时获取垃圾值,使用按值返回类对象的赋值运算符重载
- 在c++中的赋值运算符重载方法中删除旧的动态分配内存
- 复合赋值运算符重载
- 对象的动态内存和赋值运算符重载
- c++中的赋值运算符重载
- c++赋值运算符重载
- 如何通过赋值运算符重载将一个列表复制到另一个列表上?C++
- 赋值运算符重载和无效内存
- 赋值运算符重载 -- 错误 C2440:'==':无法从 'A<T> *' 转换为 'A<T> *const '
- 为什么内存泄漏只发生在赋值运算符重载的情况下,而不是在复制构造函数中,以及复制和交换习惯用法如何解决它
- 内存泄漏,使赋值运算符重载、新建、删除和C++
- C++中的效率和赋值运算符重载
- 赋值运算符重载/检索功能
- 为什么在赋值运算符重载中返回引用