[英]does assignment operator work with different types of objects?
class A {
public:
void operator=(const B &in);
private:
int a;
};
class B {
private:
int c;
}
抱歉。 发生了一个错误。 赋值运算符有效吗? 或者有没有办法实现这一目标? [A和B级之间没有关系。]
void A::operator=(const B& in)
{
a = in.c;
}
非常感谢。
是的,你可以这样做。
#include <iostream>
using namespace std;
class B {
public:
B() : y(1) {}
int getY() const { return y; }
private:
int y;
};
class A {
public:
A() : x(0) {}
void operator=(const B &in) {
x = in.getY();
}
void display() { cout << x << endl; }
private:
int x;
};
int main() {
A a;
B b;
a = b;
a.display();
}
这不是一个答案,但是应该知道赋值运算符的典型习惯是让它返回对象类型的引用(而不是void)并在结尾返回(* this)。 这样,您可以链接分配,如a = b = c:
A& operator=(const A& other)
{
// manage any deep copy issues here
return *this;
}
赋值运算符和参数化构造函数都可以具有任何类型的参数,并以他们想要初始化对象的任何方式使用这些参数的值。
其他人已经对此有所了解,但我实际上会说出来。 是的,您可以使用不同的类型,但请注意,除非您使用朋友,否则您的班级无法访问与运营商传递的类的私有成员。
含义A无法访问B :: c,因为它是私有的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.