设计一个Ear类,描述狗的耳朵,包含属性color(int型)。再设计一个Dog类,包含两个Ear成员,leftEar和rightEar,并包含狗的体重weight(double型)和年龄age(int型)。 编写Ear类和Dog类的构造函数、拷贝构造函数和析构函数以及其它必要的函数。在构造函数、拷贝构造函数和析构函数中输出“调用XX类的XX函数”。 测试上述类。
时间: 2023-04-04 13:03:54 浏览: 227
Ear类的代码如下:
```c++
class Ear {
private:
int color;
public:
Ear(int c) : color(c) {
cout << "调用Ear类的构造函数" << endl;
}
Ear(const Ear& e) : color(e.color) {
cout << "调用Ear类的拷贝构造函数" << endl;
}
~Ear() {
cout << "调用Ear类的析构函数" << endl;
}
};
```
Dog类的代码如下:
```c++
class Dog {
private:
Ear leftEar;
Ear rightEar;
double weight;
int age;
public:
Dog(int lc, int rc, double w, int a) : leftEar(lc), rightEar(rc), weight(w), age(a) {
cout << "调用Dog类的构造函数" << endl;
}
Dog(const Dog& d) : leftEar(d.leftEar), rightEar(d.rightEar), weight(d.weight), age(d.age) {
cout << "调用Dog类的拷贝构造函数" << endl;
}
~Dog() {
cout << "调用Dog类的析构函数" << endl;
}
};
```
测试代码如下:
```c++
int main() {
Ear e1(1);
Ear e2(e1);
Dog d1(2, 3, 10.5, 3);
Dog d2(d1);
return 0;
}
```
输出结果如下:
```
调用Ear类的构造函数
调用Ear类的拷贝构造函数
调用Ear类的构造函数
调用Ear类的构造函数
调用Dog类的构造函数
调用Ear类的拷贝构造函数
调用Ear类的拷贝构造函数
调用Dog类的拷贝构造函数
调用Dog类的析构函数
调用Ear类的析构函数
调用Ear类的析构函数
调用Dog类的析构函数
调用Ear类的析构函数
调用Ear类的析构函数
```
可以看到,构造函数、拷贝构造函数和析构函数都被正确地调用了。
阅读全文