继承
继承可以让子类拥有父类的所有成员(变量/函数)。
C++中没有像Java、Objective-C的基类。
#include <iostream>
using namespace std;
struct Person {
int m_age;
};
struct Student : Person {
int m_no;
};
struct GoodStudent : Student {
int m_money;
};
int main() {
Person person;
cout << sizeof(person) << endl; // 4
Student stu;
cout << sizeof(stu) << endl; // 8
GoodStudent gs;
cout << sizeof(gs) << endl; // 12
getchar();
return 0;
}
父类的成员变量在前,子类的成员变量在后。
成员访问权限
成员访问权限、继承方式有 3 种:
- public:公共的,任何地方都可以访问(struct默认)
- protected:子类内部、当前类内部可以访问
- private:私有的,只有当前类内部可以访问(class默认)
struct默认是public继承,class默认是private继承。
子类内部访问父类成员的权限,是以下 2 项中权限最小的那个:
- 成员本身的访问权限
- 上一级父类的继承方式
开发中用的最多的继承方式是public,这样能保留父类原来的成员访问权限。
访问权限不影响对象的内存布局。
#include <iostream>
using namespace std;
class Person {
private:
int m_age;
public:
void run() {
}
};
class Student : public Person {
};
class GoodStudent : public Student {
};
int main() {
getchar();
return 0;
}