C++面向对象整理(11)之委托构造函数与继承构造函数
注:整理一些突然学到的C++知识,随时mark一下
例如:忘记的关键字用法,新关键字,新数据结构
C++ 的 委托构造、继承构造
提示:本文为 C++ 中 异常、try、throw、catch 的写法和举例
一、委托与继承
委托构造函数和继承构造函数是两种用于优化和简化构造函数编写的特性。这些特性在C++11及以后的版本中引入,旨在提高代码的复用性和可读性。下面我将分别解释这两种构造函数的特点和用法。
1、委托构造函数
委托构造函数允许一个构造函数调用同一个类中的另一个构造函数(一般是参数不同的重载),以执行公共的初始化任务。这可以减少重复的代码,并使构造函数之间的逻辑更加清晰。
语法:通过构造函数的列表初始化写法加自己同名的另一个重载的参数个数不同的本构造函数(即:
加一个同名构造函数)
示例:
class MyClass {
public:
MyClass() : MyClass(123) {} // 委托给接受一个整数的构造函数
MyClass(int value) : data(value) {} // 初始化成员变量data
private:
int data;
};
在上面的示例中,无参数的构造函数MyClass()
通过委托调用接受一个整数的构造函数MyClass(int value)
,并传递了值123。这样,两个构造函数都可以使用相同的初始化逻辑。
2、继承构造函数
继承构造函数允许派生类继承基类的构造函数,而无需在派生类中显式地重新定义它们。这可以减少代码的冗余,并确保基类和派生类之间的一致性。
语法:通过在子类声明中使用using 类名::构造函数名
来实现。这样,子类就可以直接使用基类的构造函数来构造派生类对象,而不需要重新定义相同的构造函数。
示例:
class Base {
public:
Base(int value) : data(value) {}
private:
int data;
};
class Derived : public Base {
public:
using Base::Base; // 继承基类的构造函数
};
在上面的示例中,Derived类通过using Base::Base;语句继承了Base类的构造函数。这意味着,当创建Derived类的对象时,可以直接使用Base类的构造函数,而无需在Derived类中重新定义它们。
Derived d(10); // 使用继承自Base的构造函数来初始化Derived对象
这样,d对象将使用Base类的构造函数进行初始化,其中data成员变量将被初始化为10。
总结
MyClass(paraslist1,...) : MyClass(paraslist2...) {}
实现委托构造。
using Baseclass::Baseclass;
实现子类的继承构造