#include <iostream>
#include <string>
using namespace std;
/*---------------------------------
13-2 向基类构造函数传递参数(注意对比13-1的运行结果)
1) 如果没有定义派生类的构造函数,那么将默认执行基类的构造函数。
2) 如果派生类要向基类传递参数,那么必须在派生类里定义一个构造函数,
该函数只起到向基类传递参数的作用。
3) 如果只需要调用基类的构造函数,不用要向基类传递参数的话,那么
派生类不用定义构造函数。
---------------------------------*/
class father
{
protected:
string name;
int tall;
public:
father(string a,int i);
father()
{cout<<"构造基类"<<endl;}
void print()
{cout<<"name"<<"身高为:"<<tall<<endl;}
~father()
{cout<<"释放基类对象"<<endl;}
};
father::father(string a,int i)
{
cout<<"\n在基类的构造函数内"<<endl;
name = a;
tall = i;
print();
cout<<"离开基类构造函数"<<endl;
}
class son:public father
{
private:
int weight;
public:
son(string a,int i,int j);
void print1();
~son()
{cout<<"\n释放子类对象"<<endl;}
};
//son::son(string a,int i,int j) /*仅仅此处有别于13-0小节笔记*/
son::son(string a,int i,int j):father(a,i) //调用基类的构造函数father()并传递初始值
{
// name =a; //前两个参数传给基类
// tall =i; //前两个参数传给基类
weight =j; //后一个参数传给子类
cout<<"在子类的构造函数内"<<endl;
}
void son::print1()
{
father::print();
cout<<"体重:"<<weight<<endl;;
}
int main()
{
son Mike("Mike",170,110);
Mike.print1();
cout<<"程序结束"<<endl;
return 0;
}
运行结果:
在基类的构造函数内
name身高为:170
离开基类构造函数
在子类的构造函数内
name身高为:170
体重:110
程序结束
释放子类对象
释放基类对象
Press any key to continue
C++ 继承 6--2向基类构造函数传递参数方法一(注意对比6--1的运行结果)
最新推荐文章于 2022-11-12 21:29:18 发布