第七章:继承,多态,多重继承,虚拟继承

继承公有

继承的目的是为了代码重用。就是相当于复制粘贴。

class shop
{
public:
    int m_a;
    void saledailygood()
    {
        cout<<"卖日用品"<

继承保护的

class shop
{
protected://继承保护的变量以及函数,这里的别丢了ed;
    int m_a;
public:
        void saledailygood()
    {
        cout<<"卖日用品"<
第七章:继承,多态,多重继承,虚拟继承_第1张图片
Paste_Image.png

私有继承:没有太大意义

class shop
{
private:
    int m_a;
public:
    void setb(int a)
    {
        m_a=a;
    }
    int getb()
    {
        return m_a;
    }
    void saledailygood()
    {
        cout<<"卖日用品"<

继承可以通过儿子找到父亲

class shop
{
public:
    shop()
    {
        cout<<"c++ is hard to learn"<

如果父类的构造函数有了形参,可以用手动调用给其赋值

class shop
{
    int m_a;
public:
    shop(int a)//这里面带了形参
    {
        m_a=a;
        cout<<"c++ is hard to learn"<这里注意一下,这么传参不是太理解。
    {
        cout<<"you are a good boy"<

构造函数加析构函数的继承

class shop
{
    int m_a;
public:
    shop(int a)
    {
        m_a=a;
        cout<<"~基类c++ is hard to learn"<

如何调用其它类名里的函数

class B0
{
public:
    void display()
    {
        cout<<"B0 display"<

多态:关键字virtual

class B0
{
public:
    virtual void display()//多态的关键字放在基类,这个函数是虚函数
    {
        cout<<"B0 display"<display();

    B1 b1;
    p0=&b1;
    p0->display();//如果没有virtual,那么这个值和b0是一样的。
    D1 d1;
    d1.display();
    d1.B1::display();
    return 0;
}

多重继承:

但是现实生活中很多东西不能多重继承,比如名字,身份证号码。

class B0
{
public:
    virtual void display()
    {
        cout<<"B0 display"<display();

    B1 b1;
    p0=&b1;
    p0->display();
    D1 d1;
    d1.display();
    d1.B1::display();
    return 0;
}

多重继承里面用了虚继承

class person
{
public:
    int id;
};
class father:virtual public person//如果不用virtual,会编译不过他会告诉你:
对成员'id'的请求是不明确的
{
public:
    void money()
    {
        cout<<"有钱"<

关于虚拟继承的打印顺序问题

class A
{
public:
    A()
    {
        cout<<"A cons---"<

你可能感兴趣的:(第七章:继承,多态,多重继承,虚拟继承)