子类:在父类的基础上继承父类的属性,并拥有新属性,称子类是父类的继承。
子类的定义:
class 子类名 : 访问修饰符 父类名
注意:
子类可以直接访问父类的公共部分,而不能直接访问父类的私有部分,可以访问父类的受保护部分(受保护部分不能在外部调用,如main函数中)
同时,在构造和析构时满足构造时先构造父类,析构时先析构子类。
C++的一个特性:名字隐藏(例子见下)
在子类中定义与父类相同(名字参数皆相同)的函数,父类中的同名函数皆会被隐藏。
一个继承(包括了名字隐藏)的例子:
#include <cstdio>
#include <iostream>
using namespace std;
class A
{
public:
A():i(0) { cout << "A::A()" << endl; }
~A() { cout << "A::~A()" << endl; }
void print() { cout << "i=" << i << endl; }
int set(int ii) { i = ii; }
private:
int i; //定义成员变量
protected:
int j; //受保护的变量,只能在自己和子类中使用
};
class B : public A
{
public:
void f() { set(20); print(); } //在子类中新增一个函数,可以调用父类的函数
//void f() { i=20; print(); }
//父类中私有的成员并不能直接修改,所以上一条语句是错的
void setj(int jj) { j=jj; }
//void print() { cout << "name hide" << endl;}
//若加上以上语句,则调用print函数时将会输出name hide
};
int main()
{
B b;
b.set(10);
b.print();
b.f();
return 0;
}