一个类委托构造另一个类
时间: 2023-05-28 22:01:06 浏览: 72
在C++中,可以使用以下语法在一个类委托构造另一个类:
class B {
private:
int x;
int y;
public:
B(int a, int b) : x(a), y(b) {}
void print() {
cout << "x: " << x << " y: " << y << endl;
}
};
class A {
private:
B b;
int z;
public:
A(int a, int b, int c) : b(a, b), z(c) {}
A(int a, int b) : A(a, b, 0) {} // 委托构造函数
void print() {
cout << "z: " << z << " ";
b.print(); // 调用另一个类B的print函数
}
};
在上面的代码中,类A包含一个B类型的对象和一个int类型的变量。类B有一个带两个参数的构造函数,用于初始化x和y。类A有两个构造函数,其中一个构造函数委托给另一个构造函数,并将第三个参数设置为0。类A还有一个print函数,它调用类B的print函数。
以下是使用委托构造函数创建类A对象的示例:
A obj1(1, 2, 3); // 使用A的三个参数的构造函数
obj1.print(); // 输出 z: 3 x: 1 y: 2
A obj2(4, 5); // 使用A的两个参数的构造函数
obj2.print(); // 输出 z: 0 x: 4 y: 5
在上面的示例中,可以看到A的两个不同构造函数都使用了类B的构造函数来初始化类B的对象。这种方式使得代码更加简洁和清晰,同时也避免了重复的代码。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)