4.创建一个计数器类Counter,对其重载单目运算符“++”,要求包含前置和后置的重载函数,并分别用类的成员函数和友元函数实现。
时间: 2024-02-24 14:59:06 浏览: 77
C++运算符重载函数作为类成员函数和友元函数.docx
好的,下面是一个示例代码,实现了你的要求:
```c++
#include<iostream>
using namespace std;
class Counter{
private:
int count;
public:
Counter(int c=0):count(c){}
void display(){
cout << "count = " << count << endl;
}
// 前置++
Counter& operator++ (){
count++;
return *this;
}
// 后置++
Counter operator++ (int){
Counter tmp(*this);
operator++();
return tmp;
}
friend Counter& operator++ (Counter& c);
friend Counter operator++ (Counter& c, int);
};
Counter& operator++ (Counter& c){
c.count++;
return c;
}
Counter operator++ (Counter& c, int){
Counter tmp(c);
c.count++;
return tmp;
}
int main(){
Counter c1(0);
c1.display();
++c1;
c1.display();
c1++;
c1.display();
Counter c2(0);
c2.display();
++c2;
c2.display();
c2++;
c2.display();
return 0;
}
```
在这个示例代码中,我们定义了一个名为 Counter 的类,该类包含了一个私有成员变量 count,表示计数器当前的值。我们定义了一个构造函数,用于初始化计数器的值。
然后,我们重载了单目运算符“++”,包括前置和后置两种形式,并分别用类的成员函数和友元函数实现。在这四个函数中,我们分别实现了计数器的自增运算,并返回计数器对象。
最后,在主函数中,我们创建了两个计数器对象 c1 和 c2,并进行前置和后置自增运算,将结果保存在同一个对象中,并调用 display 函数将结果输出。
阅读全文