(12)C++ 继承

  

1继承语法

class Base {
public:
    void print() {
        cout << "Base" << endl;
    }
};

class Sun : public Base {

};

int main() {
    Sun s;
    s.print();
}

 

2继承访问权限

 子类继承父类时,会根据继承的三种方式改变子类继承成员的访问权限

 

3.继承模型

父类的所有成员变量和函数都会被子类继承,但会根据权限不同有的不能被调用

查看方式:

(1)打开开发者命令提示符

从windows开始中打开

 

 (2)跳转到文件路径

(3)cl /d1 reportSingleClassLayout类名 文件名

cl /d1 reportSingleClassLayoutSun main.cpp

注意: c后面时英文字母L,d后面是数字one

class Base {
public:
    int a;
    void print() {
        cout << "Base" << endl;
    }
};

class Sun : public Base {
    int b;
}

 

 

 可以看到类内的成员被继承了下来

 4.继承中构造和析构顺序

 

class Base {
public:
    Base() {
        cout << "父类构造" << endl;
    }
    ~Base() {
        cout << "父类析构" << endl;
    }
};

class Sun : public Base {
public:
    Sun() {
        cout << "子类构造" << endl;
    }
    ~Sun() {
        cout << "子类析构" << endl;
    }
};

int main() {
    {
        Sun s;
    }
}

 

 生命周期符合栈的方式

5.父类和子类的调用

子类如果想要调用父类的成员变量或成员函数需要加作用域

 

class Base {
public:
    void print() {
        cout<<"父类"<<endl;
    }
};

class Sun : public Base {
public:
    void print() {
        cout << "子类" << endl;
    }
};

int main() {
    {
        Sun s;
        s.print();
        s.Base::print();//方法子类对象父类需要加作用域
    }
}

 

静态的规则也相同

 

5.多继承

class Base1 {
public:
    void print() {
        cout<<"父类1"<<endl;
    }
};

class Base2 {
public:
    void print() {
        cout << "父类2" << endl;
    }
};

class Sun : public Base1, public Base2{
public:
    void print() {
        cout << "子类" << endl;
    }
};

 小心不同父类出现同名的情况

 

转载于:https://www.cnblogs.com/buchizaodian/p/11606102.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值