定义一个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对象的体重和并返回
时间: 2024-02-20 09:57:57 浏览: 71
Nginx + Tomcat实现请求动态数据和请求静态资源的分离详解
(1) 定义Cat类的头文件如下:
```cpp
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);
};
```
其中,静态数据成员numOfCats和numOfCatsGo分别用于记录已经创建的Cat对象的个体数目和已经销毁的Cat对象的个体数目。静态成员函数getNumOfCats(bool IsConstruted)用于读取静态数据成员numOfCats和numOfCatsGo的值,当IsConstruted为true时读取numOfCats,当IsConstruted为false时读取numOfCatsGo。
(2) 友元函数getTotalWeight()的实现如下:
```cpp
class Boat;
double getTotalWeight(const Cat& c, const Boat& b) {
return c.weight + b.weight;
}
class Boat {
private:
double weight;
public:
Boat(double w = 0.0) : weight(w) {}
friend double getTotalWeight(const Cat& c, const Boat& b);
};
```
其中,友元函数getTotalWeight()用于计算一个Cat对象和Boat对象的体重和并返回。由于需要访问Cat类的私有成员weight,因此在Boat类中声明Cat类为友元类。
阅读全文