目录
1.继承的概念
继承是面向对象程序设计是代码可以复用的重要手段,可以在原有的特性上继续扩展,继承就是对类的复用。
2.继承的格式
person的成员变量和成员函数都会变成子类student的一部分。
class person
{
protect:
string name;
int age;
};
class student : public person
{
protected:
int _stuid;//学号
}
2.1继承方式和访问限定符
2.2继承基类成员访问方式的变化
1.权限只能缩小,不能放大。
2.public > protect > private。
3.父类private成员,在派生类中一律不可见。
例:public成员遇到protect继承,在派生类就是protect成员,protect的权限小于public。
如果父类的成员,被继承后不想被在类外访问,就把该成员定义为保护。
3.基类和派生类对象赋值转换
派生类的对象/指针/引用是可以直接赋值给基类,因为会把派生类多出的部分给切片。
基类是不能赋值给派生类
4.隐藏/重定义
1.派生类和基类都是拥有独立的作用域的。
2.基类和派生类中据有同名函数,这时候调用这个同名函数,优先调用派生类,基类函数就被隐藏。
3.函数名相同就构成隐藏。
例:基类func就在派生类bb中隐藏了。
class A
{
public:
void fun()
{
cout << "func()" << endl;
}
};
class B : public A
{
public:
void fun(int i)
{
A::fun();
cout << "func(int i)->" <<i<<endl;
}
};
void test()
{
B bb;
bb.func(10);
}
5.派生类的默认成员函数
派生类的默认成员函数,都要加上基类的那一部分。
例:对基类进行构造,就必须调用基类的构造。