栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++ 派生类和基类的赋值兼容性原则

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++ 派生类和基类的赋值兼容性原则

#include 
using namespace std;



class Parent {
public:
    Parent() {
        cout << "父类的构造函数" << endl;
    }
    void printP() {
        printf("我是父类函数printP()!n");
    }
    ~Parent() {
        cout << "父类析构函数" << endl;
    }
protected:
    int a;
    int b;
private:
};

class Child : public Parent {
public:
    Child() {
        a = 0; b = 0; c = 0;
        cout << "子类的构造函数" << endl;
    }
    void printC() {
        printf("我是子类函数printC()!n");
    }
    ~Child() {
        cout << "子类析构函数" << endl;
    }
protected:
private:
    int c;
};

void toPrint(Parent* p) {
    p->printP();
}

void toPrint(Parent& p) {
    p.printP();
}

// 子类是特殊的父类,可以把子类当作父类用
// 子类也叫派生类
// 派生类是一种特殊的基类。
void main01() {
    Parent p1;
    p1.printP();

    Child c1;
    c1.printC();
    c1.printP();

    Parent* base = NULL;
    base = &c1; // 赋值兼容性原则:可以把子类对象赋值给基类,子类就是一种特殊的父类
    base->printP();

    Parent& myp = c1;
    myp.printP();

    // 测试基类指针做函数参数
    toPrint(&p1);
    toPrint(&c1);

    // 测试基类引用做函数参数
    toPrint(p1);
    toPrint(c1);

    // 子类对象初始化父类
    Parent p3 = Child();
    p3.printP();

    Parent p4 = c1;
    p4.printP();


    system("pause");
}



void playObj() {
    //Parent p1;

    // 没有基类哪有派生类
    Child c1; // 子类先调用父类的构造函数,然后再调用子类自己的构造函数
}

void main() {

    playObj();

    system("pause");
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1011881.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号