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

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

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

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

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


#include <iostream>
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<<endl<< a5.a <<endl<< a6.a<<endl;
        a1.cry();
        a3.cry();
        return 0;
    }

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

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

 小二在加个餐!

关于在类外面重写函数:

写法:函数类型+需要改写的函数所在类名字+::+函数名和函数体。(这个函数类型必须和类里面的一样,函数的转递参数也不能改变)

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

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

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

猜你喜欢

转载自blog.csdn.net/m0_53394907/article/details/123886911