c++初学者应该了解的关于继承和构造的一些的常识

c++初学者应该了解的关于继承和构造的一些的常识,第1张

1,c++是可以多继承的语言,也就是一个子类可以有几个父类,你问我c++没接口吗,答案是有。


2关于继承方面的一些常识:

当被传值的是一个实体对象时,如果绑定的是子类,则不关父类的函数是否是虚函数,改对象调用同名函数时都说默认父类的。


当传值的是一个地址时,如果绑定的是子类,如果父类的函数是非抽象函数,则调用同名函数时默认用父类的。



#include 
using namespace std;
class father {
public:
    int a;
    string c;
public:  void cry() {
    cout << "哇哇哇1" << endl;
}
      void cry1() {
          cout << "哇哇哇2" << endl;
      }

      father() {

      }
      father(int A, string C) {
          a = A;
          c = C;
      }
      ~father() {

      }
};
class son : public  father {//子类要想调用父类的成员变量和方法时必须在继承时保证父类的public。


public:void cry() { cout << "哇哇哇3" << endl; } int b; }; class base { }; int main() { son son1; son1.cry();//正常的子类调用子类自己的函数 son a2; father a1 = a2;//当被传值的是一个实体对象时,如果绑定的是子类,则不关父类的函数是否是虚函数,改对象调用同名函数时都说默认父类的。


father &a3 = a2;//当传值的是一个地址时,如果绑定的是子类,如果父类的函数是非抽象函数,则调用同名函数时默认用父类的。


a1.cry(); a3.cry(); return 0; }

但如果把父类的同名函数cry()改成virtual 

 virtual void cry() {
    cout << "哇哇哇1" << endl;
}

关于构造函数

int main()
    {
        son son1;
        son1.cry();//正常的子类调用子类自己的函数
        son a2;
        father a1 = a2;//当被传值的是一个实体对象时,如果绑定的是子类,则不关父类的函数是否是虚函数,改对象调用同名函数时都说默认父类的。


father &a3 = a2;//当传值的是一个地址时,如果绑定的是子类,如果父类的函数是非抽象函数,则调用同名函数时默认用父类的。


father a4(1, "2");//调用自己写的带参构造 father a6 = father(1, "2");//同上 father a5=a6;//调用无参的; cout << a4 .a<

另外一定要记得,子类要调用父类的成员变量和方法继承时要声名public,另外父类里面的成员变量一定要保证子类要继承,比如用public,特别是构造函数。


class son : public  father {//子类要想调用父类的成员变量和方法时必须在继承时保证父类的public。


 小二在加个餐!

关于在类外面重写函数:

写法:函数类型+需要改写的函数所在类名字+::+函数名和函数体。


(这个函数类型必须和类里面的一样,函数的转递参数也不能改变)

void father::cry2() {
    cout << "恭喜你掌握了在类外重写函数";
}

还有一个c++的mian()函数不要写在类里面,不让会报错。


本学渣写文章不易,看官留个赞呗。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/563358.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-02
下一篇 2022-04-02

发表评论

登录后才能评论

评论列表(0条)