null第三部分 继承与派生第三部分 继承与派生C++语言程序设计
邵奇可sqk@zjut.edu.cn本章主要
内容
财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容
本章主要内容类的继承与派生
类成员的访问控制
单继承与多继承
派生类的构造、析构函数
类成员的标识与访问类的继承与派生类的继承与派生保持已有类的特性而构造新类的过程称为继承。
在已有类的基础上新增自己的特性而产生新类的过程称为派生。
被继承的已有类称为基类(或父类)。
派生出的新类称为派生类。继承与派生问题举例继承与派生问题举例类的继承与派生继承与派生问题举例继承与派生问题举例类的继承与派生继承与派生问题举例继承与派生问题举例类的继承与派生继承与派生问题举例继承与派生问题举例类的继承与派生继承与派生的目的继承与派生的目的继承的目的:实现代码重用。
派生的目的:当新的问题出现,原有程序无法解决(或不能完全解决)时,需要对原有程序进行改造。
类的继承与派生派生类的声明派生类的声明class 派生类名:继承方式 基类名
{
成员声明;
}类的继承与派生继承方式继承方式不同继承方式的影响主要体现在:
1、派生类成员对基类成员的访问控制。
2、派生类对象对基类成员的访问控制。
三种继承方式
公有继承
私有继承
保护继承类成员的访问控制公有继承(public)公有继承(public)基类的public和protected成员的访问属性在派生类中保持不变,但基类的private成员不可访问。
派生类中的成员函数可以直接访问基类中的public和protected成员,但不能访问基类的private成员。
通过派生类的对象只能访问基类的public成员。类成员的访问控制例7-1 公有继承举例例7-1 公有继承举例class Point //基类Point类的声明
{public: //公有函数成员
void InitP(float xx=0, float yy=0)
{X=xx;Y=yy;}
void Move(float xOff, float yOff)
{X+=xOff;Y+=yOff;}
float GetX( ) {return X;}
float GetY( ) {return Y;}
private: //私有数据成员
float X,Y;
};类成员的访问控制nullclass Rectangle: public Point //派生类声明
{
public: //新增公有函数成员
void InitR(float x, float y, float w, float h)
{InitP(x,y);W=w;H=h;}//调用基类公有成员函数
float GetH( ) {return H;}
float GetW( ) {return W;}
private: //新增私有数据成员
float W,H;
};null#include
#includeint main( )
{ Rectangle rect;
rect.InitR(2,3,20,10);
//通过派生类对象访问基类公有成员
rect.Move(3,2);
cout<
#includeint main( )
int main( )
{ //通过派生类对象只能访问本类成员
Rectangle rect;
rect.InitR(2,3,20,10);
rect.Move(3,2);
cout<
class B{
public:
B( );
B(int i);
~B( );
void Print( ) const;
private:
int b;
};派生类的构造、析构函数nullB::B( )
{
b=0;
cout<<"B's default constructor called."<
class B1 //基类B1,构造函数有参数
{public:
B1(int i) {cout<<"constructing B1 "<
class B1 //基类B1声明
{
public:
B1(int i)
{cout<<"constructing B1 "<
class B1 //声明基类B1
{
public: //外部接口
int nV;
void fun( ){cout<<"Member of B1"<
class B0 //声明基类B0
{
public: //外部接口
int nV;
void fun( ){cout<<"Member of B0"<
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
中给出对虚基类的构造函数的调用。如果未列出,则表示调用该虚基类的缺省构造函数。
在建立对象时,只有最派生类的构造函数调用虚基类的构造函数,该派生类的其它基类对虚基类构造函数的调用被忽略。 虚 基 类有虚基类时的构造函数举例有虚基类时的构造函数举例#include
class B0 //声明基类B0
{ public: //外部接口
B0(int n){ nV=n;}
int nV;
void fun( ){cout<<"Member of B0"<
class B0 //基类B0声明
{ public:
void display( ){cout<<"B0::display( )"<display( ); //"对象指针->成员名" }nullvoid main( ) //主函数
{ B0 b0; //声明B0类对象
B1 b1; //声明B1类对象
D1 d1; //声明D1类对象
B0 *p; //声明B0类指针
p=&b0; //B0类指针指向B0类对象
fun(p);
p=&b1; //B0类指针指向B1类对象
fun(p);
p=&d1; //B0类指针指向D1类对象
fun(p);
}
null