创建一个计数器类Counter,对其重载单目运算符“++”,要求包含前置和后置的重载函数,并分别用类的成员函数和友元函数实现。
时间: 2024-02-21 15:00:00 浏览: 114
好的,我会为您解答这个问题。
首先,我们需要定义一个计数器类Counter,其中包含一个私有成员变量count,表示当前计数器的值。类的定义如下:
```cpp
class Counter {
public:
Counter(int count = 0) : count(count) {}
// 前置++
Counter& operator++() {
count++;
return *this;
}
// 后置++
Counter operator++(int) {
Counter c(*this);
count++;
return c;
}
// 友元函数
friend Counter& operator--(Counter& c);
friend Counter operator--(Counter& c, int);
int getCount() const { return count; }
private:
int count;
};
```
在上面的代码中,我们定义了一个计数器类Counter,其中包含了一个count成员变量,表示当前计数器的值。同时,我们重载了前置和后置++运算符,前置++运算符返回一个引用,后置++运算符返回一个副本,这两个运算符都会将计数器的值加1。
接下来,我们需要重载单目运算符--,同样包括前置和后置的重载函数,并分别用类的成员函数和友元函数实现。代码如下:
```cpp
// 前置--
Counter& operator--(Counter& c) {
c.count--;
return c;
}
// 后置--
Counter operator--(Counter& c, int) {
Counter d(c);
c.count--;
return d;
}
```
在上面的代码中,我们定义了两个单目运算符--,同样包括前置和后置的重载函数。前置--运算符返回一个引用,后置--运算符返回一个副本,这两个运算符都会将计数器的值减1。
最后,我们来看一下如何使用这个计数器类:
```cpp
int main() {
Counter c(0);
cout << "初始值:" << c.getCount() << endl;
++c;
cout << "前置++:" << c.getCount() << endl;
c++;
cout << "后置++:" << c.getCount() << endl;
--c;
cout << "前置--:" << c.getCount() << endl;
c--;
cout << "后置--:" << c.getCount() << endl;
return 0;
}
```
在上面的代码中,我们首先创建了一个计数器对象c,初始值为0。然后分别调用了前置++、后置++、前置--和后置--运算符,并输出计数器当前的值。
阅读全文