繁体   English   中英

赋值运算符是否适用于不同类型的对象?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM