前一小节《容器与继承》http://blog.csdn.net/thefutureisour/article/details/7744790提到过:对于容器,假设定义为基类类型,那么则不能通过容器訪问派生类新增的成员;假设定义为派生类类型,一般不能用它承载基类的对象,即使利用类型转化强行承载,则基类...
分类:
其他好文 时间:
2014-08-21 09:40:53
阅读次数:
264
句柄类存在的意义是为了弥补将派生类对象赋给基类对象时发生的切片效应。例如下面的程序:
multimap basket;
Base base;
Derived derive;
basket.insert(base); //ok,add copy of base;
basket.insert(derive); //ok,but derive sliced down to its base part....
分类:
编程语言 时间:
2014-07-27 11:21:12
阅读次数:
255
1.再说智能指针 1.1 为什么要用智能指针?对于一个指针,它指向一个动态分配内存的对象,若同时有多个指针指向该对象,那么当我们delete的时候,就会出现delete 一个无效内存的错误,因为该对象已经被delete过了,所以这就造成了错误。针对这一情况,我们想到,new 和 delete 必须....
分类:
编程语言 时间:
2014-07-23 11:36:26
阅读次数:
308
今日学习了控制台使用句柄操作的方法。我们都知道,使用iostream也可以向屏幕中输出语句。但它们只能实现基本的输入输出 操作,对于控制台窗口界面的控制却无能为力,而且不能与stdio.h和conio.h友好相处,因为iostream和它们是C++两套不同的输入。因此,我们需要句柄类来帮助我们完成这...
分类:
其他好文 时间:
2014-06-23 00:28:08
阅读次数:
162
句柄类似于指向指针的指针
Windows系统中有许多内核对象,比如打开的文件、创建的线程、程序的窗口等等。这些重要的对象肯定不是4个字节或者8个字节足以完全描述的,它们拥有大量的属性。为了保存这样一个"对象"的状态,往往需要上百甚至上千字节的内存空间,那么怎么在程序间或程序内部的子过程(函数)之间传递这些数据呢?拖着这成百上千的字节拷贝来拷贝去吗?显然会浪费效率。那么怎么办?当然...
分类:
其他好文 时间:
2014-06-16 11:56:57
阅读次数:
192
面向对象编程--句柄类与继承[续]三、句柄的使用 使用Sales_item对象能够更easy地编写书店应用程序。代码将不必管理Item_base对象的指针,但仍然能够获得通过Sales_item对象进行的调用的虚行为。1、比較两个Sales_item对象 在编写函数计算销售总数之前,须要定义比較Sa...
分类:
编程语言 时间:
2014-06-02 15:53:44
阅读次数:
362
模板与泛型编程--一个泛型句柄类引言:【小心地雷】 这个例子体现了C++相当复杂的语言应用,理解它需要很好地理解继承和模板。在熟悉了这些特性之后再研究这个例子也许会帮助。另一方面,这个例子还能很好地测试你对这些特性的理解程度。 前面示例的Sales_item和Query两个类的使用计数的实现是相同的。这类问题非常适合于泛型编程:可以定义类模板管理指针和进行使用计数。原本不相关的Sales_item...
分类:
编程语言 时间:
2014-05-22 22:46:57
阅读次数:
479
面向对象编程--再谈文本查询示例引言: 扩展第10.6节的文本查询应用程序,使我们的系统可以支持更复杂的查询。 为了说明问题,将用下面的简单小说来运行查询: Alice Emma has long flowing red hair.
Her Daddy says when the wind blows
through her hair, it looks almost alive,
l...
分类:
编程语言 时间:
2014-05-18 04:15:13
阅读次数:
564
面向对象编程--句柄类与继承引言: C++中面向对象编程的一个颇具讽刺意味的地方是:不能使用对象支持面向对象编程,相反,必须使用指针或引用。void get_prices(Item_base object,
Item_base *pointer,
Item_base &reference)
{
//需要根据指针或引用实际所绑定...
分类:
编程语言 时间:
2014-05-15 08:19:33
阅读次数:
359