(C++) 如何为对象重新定义“=”运算符

问题描述

我有一个 A 类的对象。

class A[
{
   int x;
   string y;
   float z;
    ....
}

然后我有一个整数,称为“整数”。 我如何重新定义 = 运算符以执行类似

int integer;
A obj = integer;

为了获得与非所有成员的构造函数调用相等的东西:

A obj(integer,",0); 

解决方法

这有点顽皮,但是:

#include <iostream>

using std::cout;
using std::endl;

class A {
public:
    int x;

    A & operator=(int value) {
        x = value;
        return *this;
    }
};

int main(int,char **) {
    A obj;

    obj.x = 5;
    cout << "Initially: " << obj.x << endl;

    obj = 10;
    cout << "After: " << obj.x << endl;

}

运行时:

g++ Foo.cpp -o Foo && Foo
Initially: 5
After: 10

这就是你想要做的吗?请注意,这是非常顽皮的。类 A 不是整数,将其分配给 int 会使人们感到困惑。 C++ 可以让你做一些你可能不应该做的事情,这就是其中之一。