【C++】派生类构造函数的类外定义

#C++ 1:派生类构造函数的类外定义

最近上课在看课本的时候发现派生类都是在类内定义的,自己写代码想要按普通类的方式类外定义的时候出现了报错,如下:

//CPerson的派生类:CStudent
class CStudent:public CPerson{
    private:
    string course;
    float grade;

    public:
 	CStudent(string nam,string nu,string cou,float gra):CPerson(nam,nu)void StuOut();
};

CStudent::CStudent(string nam,string nu,string cou,float gra):CPerson(nam,nu){
	course=cou;
	grade=gra;

后来发现对基类构造函数的引用不能同时出现在类内声明和类外定义中,于是可以做两种修改:

  • 方法1:在类内定义+引用基类的构造函数
class CStudent:public CPerson{
    private:
    string course;
    float grade;

    public:
    //派生类的构造函数
    //方法1:在类内声明+定义+引用基类的构造函数
    CStudent(string nam,string nu,string cou,float gra):CPerson(nam,nu){course=cou;grade=gra;}
    void StuOut();
};
  • 方法2:在类内只声明,不引用基类的构造函数;在类外定义+引用基类构造函数
class CTeacher:public CPerson{
    private:
    string title;
    int papern;

    public:
    CTeacher(string nam,string nu,string ti,int pn);
    void TeaOut();
};

//派生类的构造函数
//方法2:在类内只声明,不引用基类的构造函数!!!在类外定义+引用基类构造函数
CTeacher::CTeacher(string nam,string nu,string ti,int pn):CPerson(nam,nu){
    title=ti;
    papern=pn;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值