继承和派生
来源:互联网 发布:淘宝店转让流程 公示 编辑:程序博客网 时间:2024/05/21 15:40
只有一个基类的派生方法称为单继承。实际上,可以为一个派生类指定多个基类,这样的继承结构被称为多重继承或多继承。
多继承声明
class 派生类名 : 继承方式1 基类名1,继承方式2 基类名2,……,继承方式n 基类名n
{
// 派生类新增数据成员和成员函数
};
例:多继承时派生类的成员访问属性。
#include<iostream.h>
class A
{
private:
public:
};
class B
{
private:
public:
};
class C : public A, private B
{
private:
public:
};
void main()
{
}
执行结果:
x=1
x=1
y=2
z=3
多继承的构造函数和析构函数
派生类名(总参数列表):基类名1(参数表),基类名2(参数表),……,基类名n(参数表)
{
// 派生类新增成员初始化语句
}
例:多继承时派生类的构造函数与析构函数。
#include<iostream.h>
class A1
{
private:
public:
};
class A2
{
private:
public:
};
class A3
{
private:
public:
};
class D : public A1, public A2
{
private:
public:
};
void main()
{
}
执行结果:
A1 Constructor:2
A2 Constructor:1
A3 Constructor:3
D Constructor:4
D Destructor
A3 Destructor
A2 Destructor
A1 Destructor
派生类重载基类成员和二义性问题
例:派生类重载基类成员。
#include<iostream.h>
class animal
{
public:
};
class dog: public animal
{
public:
};
class cat: public animal
{
public:
};
void main()
{
}
执行结果:
o...!o...!
won won
meow meow
o...!o...!
o...!o...!
I eat food.
I eat food.
说明:
① 经过继承所得成员,如果派生类没有重新定义,那么它会使用基类的成员;
②如果派生类重载基类成员,那么就会掩盖基类的同名成员,改用派生类的新版本。如果要使用基类名,需要采用以下形式:
基类名::成员名
1. 成员函数的二义性问题
例:多继承中成员函数的二义性问题。
#include<iostream.h>
class A
{
protected:
public:
};
class B
{
protected:
public:
};
class C : public A, public B
{
public:
};
void main()
{
}
2. 成员变量的二义性问题
例:公共基类引起的二义性问题。
#include<iostream.h>
class A
{
public:
};
class B : public A
{
public:
};
class C : public A
{
public:
};
class D : public B, public C
{
public:
};
void main()
{
}
来自:http://hi.baidu.com/raoxj/blog/item/bad6de54bc869f44d00906be
- 派生和继承
- 继承和派生类
- 派生和继承
- 继承和派生
- 派生和继承
- 继承和派生
- 继承和派生
- 继承和派生
- Android_继承和派生
- VC_继承和派生
- C++ 继承和派生
- 继承和派生
- C++继承和派生
- 继承和派生
- 继承和派生
- 继承和派生
- 继承和派生
- 继承和派生1
- 你只是在累了、伤了、痛了的时候才想起我
- 约瑟夫环的问题编程C++实现
- uva-10591 - Happy Number
- UESTC1425-LCIS 线段树区间合并
- SAN和NAS的区别
- 继承和派生
- HTML5 利用矩阵计算坐标
- 写尽自己一个人的孤独,却写不出心里的寂寞
- "黑马程序员"网络编程学习笔记1
- UVALive 4844 String Popping【记忆化搜索】
- Windows 操作技巧(不断更新)
- 文本比较算法Ⅰ——LD算法
- hdu3308 线段树区间合并
- 失无所失的伤感空间日志分享:我会一直这样爱着你,心甘情愿