4.创建一个计数器类Counter,对其重载单目运算符“++”,要求包含前置和后置的重载函数,并分别用类的成员函数和友元函数实现。
时间: 2024-02-21 12:57:19 浏览: 155
C++运算符重载函数作为类成员函数和友元函数.docx
好的,这是一个关于计数器类Counter的示例代码,包含前置和后置自增运算符的重载实现:
```cpp
class Counter {
public:
Counter(int n = 0) : count(n) {}
Counter(const Counter& other) : count(other.count) {}
~Counter() {}
// 前置自增运算符重载
Counter& operator++() {
count++;
return *this;
}
// 后置自增运算符重载
Counter operator++(int) {
Counter temp(*this);
++(*this);
return temp;
}
int getCount() const { return count; }
private:
int count;
};
// 友元函数实现后置自增运算符重载
Counter operator++(Counter& c, int) {
Counter temp(c);
++c;
return temp;
}
```
上面的代码中,Counter类包含一个计数器变量count和一个构造函数、一个拷贝构造函数、一个析构函数、一个获取计数器值的函数getCount。重载的前置自增运算符和后置自增运算符分别通过成员函数和友元函数实现。其中,前置自增运算符重载直接将计数器值加1并返回Counter对象的引用;后置自增运算符重载中,先用当前对象生成一个副本,再调用前置自增运算符重载将计数器值加1并返回副本。
这样,我们就可以通过以下代码测试Counter类的自增运算符重载功能了:
```cpp
Counter c(10);
cout << c++ << endl; // 后置自增运算符重载,输出10
cout << ++c << endl; // 前置自增运算符重载,输出12
Counter d = ++c; // 前置自增运算符重载,d的值为13,c的值为13
```
希望这个示例代码能够帮到你,如果有任何问题,欢迎继续提问。
阅读全文