Problem B: C++习题 虚函数-计算图形面积
Description
编写一个程序,定义抽象基类Shape,由它派生出5个派生类: Circle(圆形)、Square(正方形)、Rectangle(矩形)、Trapezoid(梯形)、Triangle(三角形)。
用虚函数分别计算几种图形面积,并求它们之和。
要求用基类指针数组,使它每一个元素指向一个派生类对象。
...
分类:
其他好文 时间:
2014-06-10 15:07:53
阅读次数:
286
1 设计一个基类
2 继承这个基类,并包含这个基类的一个对象
3 创建继承类的时候,初始化这个基类,因为是基类指针,所以可以是所有基类的衍生类对象,那么就可以叠加任意多个衍生类对象了。
关键是在衍生类中包含一个基类对象,然后有了继承和包含两重关系,可以使得一个类一个类对象叠加,达到装饰目的。
等于是创建了一个对象指针链表,一个一个对象发挥其相应的作用。
下面程序装饰一个桌...
分类:
其他好文 时间:
2014-06-05 06:15:17
阅读次数:
278
OOP 3大特性:数据抽象,继承,动态绑定
3中访问标号
protected, public, private 对比
用类进行数据抽象;用继承类继承基类的成员,实现继承;通过将基类相应函数声明为virtual,是编译器在运行时决定调用基类函数or派生类函数 完成动态绑定,即表现多态性。
多态性:利用继承和动态绑定,通过基类指针和引用来表现。
动态绑定两个条...
分类:
其他好文 时间:
2014-06-01 18:23:29
阅读次数:
440
虚函数与纯虚函数:
虚函数:在某基类中声明为virtual并在一个或多个派生类中被重新定义的成员函数,virtual 函数返回类型 函数名(参数表){函数体;}
,实现多态性,通过指向派生类的基类指针或引用,访问派生类中同名覆盖成员函数。注意虚函数在基类中是有定义的,即便定义是空。 纯虚函数...
分类:
编程语言 时间:
2014-05-31 18:36:09
阅读次数:
354
面向对象编程--转换与继承、复制控制与继承I.转换与继承引言: 由于每个派生类对象都包含一个基类部分,因此可以像使用基类对象一样在派生类对象上执行操作。 对于指针/引用,可以将派生类对象的指针/引用转换为基类子对象的指针/引用。 基类类型对象既可以作为独立对象存在,也可以作为派生类对象的一部分而存在,因此,一个基类对象可能是也可能不是一个派生类对象的部分,因此,没有从基类引用(或基类指针)到派生类...
分类:
编程语言 时间:
2014-05-13 15:15:10
阅读次数:
485
如果C同时派生了基类A和基类B,那么C的对象的内存是如何分布的呢?基类指针pa和基类指针pb对这块派生类C对象的内存所存储的内容又做和解析?或者说pa和pb指向的地址是否是C对象的首地址呢?
1.继承是按照类为整体进行组织的,且如果有继承虚函数,那么将有多余的一个虚函数表指针。
2.基类指针指向派生类后,同样是按照指针强制转化原则来解析派生类对象的部分区块内容(指针截断)
3.多继承中,各个基类的指针指向派生类后,各自基类指针指向的是派生类中与本身基类相关的派生类区块首地址。...
分类:
其他好文 时间:
2014-05-11 15:10:19
阅读次数:
309
在前篇
boost::serialization 用基类指针转存派生类(错误多多,一波三折)文中我们都是使用serialize函数来实现序列化,其代码格式如下:
private:
friend class boost::serialization::access;
template
void serialize(Archive& ar, const unsigned int ...
分类:
其他好文 时间:
2014-05-10 09:09:19
阅读次数:
520
用基类的指针去转存派生类时除了上一篇boost::serialization 用基类指针转存派生类(错误多多,一波三折)之外,还有另一种更简单的方法:
用BOOST_CLASS_EXPORT宏。下面我们来分析怎样用BOOST_CLASS_EXPORT来实现
用基类的指针去转存派生类。
首先来看前面实例的一段代码:
void save()
{
std::ofstream ofs("t7.x...
分类:
其他好文 时间:
2014-05-04 09:48:50
阅读次数:
487
boost::serialization 也支持c++的多态,这样我们就可以通过使用基类的指针来转存派生类,
我们接着上一篇(
boost::serialization(2)序列化基类
)的例子来看:
基类和派生类的代码如下:
class student_info
{
public:
student_info() {}
virtual ~student_info() {}
s...
分类:
其他好文 时间:
2014-05-03 21:08:18
阅读次数:
280