子类的写法:class 类名:public 父类的类名。
class CF {
};
//CS,子类(派生类) CF父类(基类)
class CS :public CF{
};
子类无论是在类内还是类外都可以使用父类的成员。
class CF {
public:
int m_cf;
void cffun() {
cout << "1" << endl;
}
};
//CS,子类(派生类) CF父类(基类)
class CS :public CF{
public:
int m_cs;
void ccsfun() {
m_cs = 11;
m_cf = 10;
cout << m_cf << " " << m_cs << endl;
cffun();
}
};
int main()
{
CS cs;
cs.ccsfun();
cout << cs.m_cf << " " << cs.m_cs << endl;
cs.cffun();
system("pause");
return 0;
}
作为派生类:包含了父类的成员,能够直接使用父类的成员,子类看作是对父类的扩展和延续。
当同时在子类和父类定义一个同名的变量,并在子类中定义一个函数,将这个变量赋予值,优先使用的是子类成员,如果想使用父类的同名成员,需要写出父类的类名作用域,函数也是一样。
void funMon() {
money = 100;
CF::money = 200;
}
在类外使用时:
cout << cs.money << " " << cs.CF::money << endl;
计算子类的大小要包含父类的成员属性,定义对象成员顺序排布:父类成员在前,子类在后,在每一个类中取决于定义的顺序。
cout << sizeof(CS) << endl;//16
cout << &cs.CF::m_cf << endl;//0000003C79F3F858
cout << &cs.CS::m_cs << endl;//0000003C79F3F860
cout << &cs.CF::money << endl;//0000003C79F3F85C
cout << &cs.CS::money << endl;//0000003C79F3F864