1. 子类中的构造和析构调用顺序
- 子类对象在构造时首先调用父类的构造函数再调用子类构造函数
- 当父类的构造函数中有参数时,必须在子类的初始化列表中显示调用
- 子类析构时首先调用子类析构,再调用父类析构函数
- 子类的成员变量和父类的成员变量同名时, 子类的同名变量会屏蔽父类的。但在子类中仍可使用父类名: : 使用父类的同名成员
#include <iostream>
using namespace std;
class A
{
public:
int a;
A(int a)
{
this->a = a;
}
};
class B:public A
{
int b;
public:
B(int a, int b):A(a)
{
this->b = b;
}
};
int main()
{
A a(10);
B b(30, 20);
cout<<b.a<<endl;
return 0;
}
2. 继承中的static关键字
- 基类定义的静态成员将被所有的派生类共享;
- 但当静态变量被声明为private时,子类也访问不到
#include <iostream>
using namespace std;
class A
{
public:
static int x;
int a;
public:
A(int a)
{
this->a = a;
x +=10 ;
}
};
int A::x = 10;
class B:public A
{
int b;
public:
B(int a,int b):A(a)
{
this->b = b;
x += 10;
}
};
int main()
{
B b(20,10);
A a(10);
cout << A::x << endl;
return 0;
}