• 父类和子类(指针,对象,引用 ,盲点)



    #include<iostream> using namespace std; class Father { public: Father() { cout << "我是父类构造函数"; } ~Father() { cout << "我是父类析构函数 "; } void printF() { cout << "我是父类的函数"; } public: int f; protected: }; class Child: public Father { public: Child() { cout << "我是子类构造函数"; } ~Child() { cout << "我是子类析构函数 "; } void printC() { cout << "我是子类的函数"; } public: int c; protected: }; int main() { Father f1; //调用父类的构造函数 Child c1;//先调用 父类的构造函数 再调用子类的构造函数。 cout << endl; cout << "f1.printF() :"; f1.printF(); //父类的对象调用父类的函数,显示父类的函数 cout << endl << "c1.printC() ::"; c1.printC();//子类的对象调用子类的函数 ,显示子类的函数 cout << endl << "c1.printF() ::"; c1.printF();//子类的对象调用父类的函数 ,显示父类函数。 f1.f = c1.f; cout <<" 我是漂亮的分割线----------------------"<< endl; Father *f2; Child c2; f2 = &c2; f2->printF(); //显示调用父类的函数,但是这如果是虚函数则显示是调用的是子类的函数 system("pause"); }

    子类对象可以当作父类对象使用

             子类对象可以直接赋值给父类对象

             子类对象可以直接初始化父类对象

          子类对象可以使用父类的成员和函数。

             父类指针可以直接指向子类对象(这里仅仅指的是子类继承的父类的对象)

             父类引用可以直接引用子类对象(这里仅仅指的是子类继承的父类的对象)

    所以上面两句和线面这一句并不矛盾。

    子类对象可以用父类的所有东西,只是对错而已,而父类对象不能用子类的任何东西。

    而子类的指针和引用就不可以指向父类对象

  • 相关阅读:
    Git-本地项目和远程项目关联
    P1-Linux下安装MySQL及登录用户配置
    P2-Centos中安装vsftpd
    ElasticSearch安装及HEAD插件配置
    ArrayList源码分析
    Maven的继承以及import作用域
    单例模式浅析
    Vim快捷键记录(工作中遇到)
    OSX下 pip更新及安装python库
    统计工具之QQ图
  • 原文地址:https://www.cnblogs.com/xiaochige/p/7538099.html
Copyright © 2020-2023  润新知