关于c ++:重载运算符=而不是使用访问器

Overload operator = instead of using accessor

我有一个名为myinteger的类,这个类有一个int类型的数据成员-如何重载运算符"="返回这个整数?不允许使用访问器方法返回整数。

数据成员

1
2
 private:
    int number;

功能

1
2
3
4
5
6
 int MyInteger::operator=(MyInteger myInteger) {

    myInteger = this->number;

    return myInteger;
}

我知道这是错误的,我试过打字,但那也是错误的。

在另一个类中,我使用这个整数只是为了打印

1
 cout << number << endl;

我如何解决这个问题?


您希望如何使用它的示例根本不使用=运算符。超载operator=对您有什么帮助?

如果希望能够将MyInteger对象插入到输出流,则需要重载operator<<,其中左操作数是输出流,右操作数是MyInteger对象。


我认为你不是指赋值运算符,而是指转换运算符。

例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include
#include <iterator>

class MyInteger
{
public:
    MyInteger() : number( 0 ) {}
    void operator ()( int x ) { if ( x < 0 ) ++number; }
    operator int() const { return number; }

private:
    int number;
};

int main()
{
   int a[] = { 1, 2, -3, 4, -5, 6, -7 };
   int count = std::for_each( std::begin( a ), std::end( a ), MyInteger() );
   std::cout <<"There are" << count <<" negative values" << std::endl;
}