C++:继承

(1)当定义一个新的类时,发现该具备之前的某一个的基本性及方法时,就可使用继承技术

(2)意义:减少代码重复率

(3)语法:

class A: <继承权限> <类名>,<继承权限> <类名>

{

 }

例如:

class A: pub1ic B,public C

{

}

(4)在继承关系中:被继承的类称为父类(基类),继承后的类称为子类(派生类);实例化一个子类时, 需要先构造父类,再构造子类,析构顺序相反

注意:

1、如果子类出现与父类同名的成员属性,父类的属性将被隐藏,所以子类对象直接访问的话,访问的是自己的。当然可以指定访问父类属性

访问子类:

obj . age

访问父类:

obj . Base: :age

代码:

#include <iostream>
using namespace std;
class Animal
{
    public:
        Animal():a_kind(""),a_age(0)
    {
        cout<<"no agr animal constructor"<<endl;
    }
        Animal(string kind,int age):a_kind(kind),a_age(age)
    {
        cout<<"have agr animal constructor"<<endl;
    }

        void AnimalInfo()
        {
            cout<<this->a_kind<<endl;
            cout<<"animal:"<<this->a_age<<endl;
        }
        string a_kind;
        int a_age;
};

class Cat:public Animal
{
    public:
        Cat():c_kind(""),c_color(""),Animal("kind",9)
    {
         //Animal("kind2", 14); //匿名对象,没有意义   
         cout<<"no agr cat construct"<<endl;
    }
        Cat(string kind,string color):c_kind(kind),c_color(color)
    {
        cout<<"have agr cat construct"<<endl;
        a_age=1;
        a_kind="animal";
    }
        void CatInfo()
        {
            cout<<c_kind<<endl;
            cout<<c_color<<endl;
            cout<<"cat:"<<a_age<<endl;
        }
        string c_kind;
        string c_color;
};

void test01()
{
    Cat c1("加菲","green");
    c1.a_age=2;
    c1.a_kind="哺乳类";
    //c1.CatInfo();
    c1.AnimalInfo();
}

void test02()
{
    Cat c2;
    c2.a_age=2;
    c2.Animal::a_age=3;
    c2.AnimalInfo();
    c2.CatInfo();
}

int main(int argc, char *argv[])
{
    //test01();
    test02();
    return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

এ᭄星辰

混口饭吃。。。。。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值