定义一个Cat类,其拥有静态数据成员numOfCats,记录已经创建的Cat对象的个体数目,静态数据成员numOfCatsGo,记录已经销毁的Cat对象的个体数目;静态成员函数getNumOfCats(bool IsConstruted),当IsConstruted为true时读取numOfCats,当IsConstruted为false时读取numOfCatsGo;数据私有成员weight,记录Cat对象的体重。 定义一个Boat类,其拥有数据私有成员weight,记录Boat对象的体重。 根据上述请完成如下内容: (1)请设计一个Cat类,体会静态数据成员和静态成员函数的用法。 (2)定义一个Cat类和Boat类的友元函数getTotalWeight(),计算一个Cat对象和Boat对象的体重和并返回 的c++代码
时间: 2024-02-20 08:57:59 浏览: 58
以下是完整的C++代码:
```cpp
#include <iostream>
using namespace std;
class Boat;
class Cat {
private:
double weight;
static int numOfCats;
static int numOfCatsGo;
public:
Cat(double w = 0.0) : weight(w) { numOfCats++; }
~Cat() { numOfCatsGo++; }
static int getNumOfCats(bool IsConstruted) {
if (IsConstruted) return numOfCats;
else return numOfCatsGo;
}
friend double getTotalWeight(const Cat& c, const Boat& b);
};
int Cat::numOfCats = 0;
int Cat::numOfCatsGo = 0;
class Boat {
private:
double weight;
public:
Boat(double w = 0.0) : weight(w) {}
friend double getTotalWeight(const Cat& c, const Boat& b);
};
double getTotalWeight(const Cat& c, const Boat& b) {
return c.weight + b.weight;
}
int main() {
Cat c1(2.5), c2(3.2);
Boat b(10.5);
cout << "Number of constructed cats: " << Cat::getNumOfCats(true) << endl;
cout << "Number of destroyed cats: " << Cat::getNumOfCats(false) << endl;
double totalWeight = getTotalWeight(c1, b);
cout << "Total weight: " << totalWeight << endl;
return 0;
}
```
在主函数中,我们创建了两个Cat对象和一个Boat对象,使用静态成员函数getNumOfCats()统计已经创建和已经销毁的Cat对象的个体数目。然后,调用友元函数getTotalWeight()计算一个Cat对象和Boat对象的体重和,并输出结果。
阅读全文