子类和父类的关系

来源:互联网 发布:涙は知っている 编辑:程序博客网 时间:2024/06/05 04:19
  • 父类的构造函数自动被调用
  • 父类没有默认constructor时,要放到初始化列表中
  • 析构时,先调子类的destructor,再调父类的destructor

子类和父类有同名函数时

父类同名函数被隐藏,name hidden

  • 只有c++如此
    • c++中子类和父类的同名函数没有关系,只是名称相同而已
  • 其他oop语言是代替

eg,

#include <iostream>using namespace std;class A {public:    A(int ii):i(ii){cout << "A::A()" << endl;}    ~A(){cout << "A::~A()" << endl;}    void print() {cout << "A::print() " << i <<endl;}    void print(int ii) {cout << "A::print(int) " << i <<endl;}    void set(int ii) {i = ii;}private:    int i;};class B : public A {public:    B():A(12){ cout << "B::B()" << endl;}    ~B() {cout << "B:~B()" << endl;}    void print(){cout << "B::print " << endl;}    void f() {        set(20);        print();    }};int main(){    B b;    // b.A::print(12); //A的print被name hidden, 需要显示调用    b.print(12);//error    return 0;}

编译报错

Error - too many arguments to function call, expected 0, have 1

0 0
原创粉丝点击