这是一篇关于讲解关于委托构造与继承构造使用的问题
1.委托构造的含义
委托构造一般指在一个类中,使用该类的另一个构造函数来协助当前构造函数完成构造
````c++
#include <iostream>
class student{
public:
explicit student(){
std::cout<<"student 构造函数"<<std::endl;
mAge = 18;
}
explicit student(int xAge,std::string xName)
:mAge(xAge),mName(xName){
}
explicit student(std::string xName)
:student(18,xName){
}
/*********错误示范******************
explicit student(std::string xName)
:student(),mName(xName){
}
***********************************/
auto getAge()->int{
return mAge;
}
private:
int mAge;
std::string mName;
};
int main()
{
student Stu("whfan");
std::cout<<Stu.getAge()<<std::endl;
return 0;
}
> \- [ ]**c++语法规定:委托构造函数的初始化必需单独出现,因此例中出现的错误示范是不被允许的**
## 2.继承构造的含义
> 继承构造一般用在存在有继承关系,且子类无超出父类的需要初始化的资源的情况下,多使用继承构造,继承构造简化了子类的构造函数的编写
````c++
#include <iostream>
class Parent{
public:
explicit Parent(){}
explicit Parent(int xAge,std::string xName)
:mAge(xAge),mName(xName){
std::cout<<"Parent 构造函数"<<std::endl;
}
~Parent(){
std::cout<<"Parent 析构函数"<<std::endl;
}
virtual void Work(){
std::cout<<"always Work"<<std::endl;
}
public:
int mAge;
std::string mName;
};
class Son:public Parent{
public:
//继承构造
using Parent::Parent; //使用父类的构造函数
/****************若不使用继承构造,则需要这样写**********************
explicit Son(int xAge,std::string xName)
:Parent(xAge,xName){
}
********************************************************************/
~Son(){
std::cout<<"Son 析构函数"<<std::endl;
}
void play(){
std::cout<<"always play No study"<<std::endl;
}
};
int main()
{
Son s(18,"whfan");
std::cout<<s.mAge<<std::endl;
return 0;
}
- [] 委托构造与继承构造的出现,主要是方便了构造函数的编写,在多构造函数和复杂构造函数中使用较多