c++4.创建一个计数器类Counter,对其重载单目运算符“++”,要求包含前置和后置的重载函数,并分别用类的成员函数和友元函数实现。
时间: 2024-02-21 21:00:05 浏览: 151
C++ 复数类的实现 运算符重载
下面是一个简单的计数器类Counter的实现,其中包含了前置和后置自增运算符的重载:
```cpp
class Counter {
public:
Counter(): count(0) {}
// 前置自增运算符的重载
Counter& operator++() {
++count;
return *this;
}
// 后置自增运算符的重载
Counter operator++(int) {
Counter tmp(*this);
++count;
return tmp;
}
private:
int count;
};
// 友元函数实现后置自增运算符的重载
Counter operator++(Counter& c, int) {
Counter tmp(c);
++c.count;
return tmp;
}
```
在上面的代码中,我们定义了一个名为Counter的类,它包含一个私有成员变量count,表示计数器的当前值。我们通过重载前置和后置自增运算符来实现计数器的自增操作。
前置自增运算符的重载使用成员函数实现,它直接对count成员变量进行自增,并返回*this指针的引用。
后置自增运算符的重载使用成员函数和一个整型参数来实现,这个整型参数没有实际作用,只是用来区分前置和后置自增运算符的重载。这个函数首先将当前Counter对象复制到一个临时变量tmp中,然后再对count成员变量进行自增,并返回临时变量tmp的值。
我们还定义了一个友元函数operator++,用于实现后置自增运算符的重载。这个函数接受一个Counter对象的引用,并使用它来实现和类成员函数中的后置自增运算符重载相同的操作。由于这个函数是友元函数,它可以访问Counter类的私有成员变量count。
这样,我们就实现了一个简单的计数器类Counter,并重载了前置和后置自增运算符。可以通过以下方式使用这个类:
```cpp
Counter c;
++c; // 使用前置自增运算符
c++; // 使用后置自增运算符
Counter c2 = c; // 复制计数器对象
```
阅读全文