C/C++
文章平均质量分 61
QQIANQQ
这个作者很懒,什么都没留下…
展开
-
More Effective C++:避免缺省构造函数
缺省构造函数(指没有参数的构造函数)在C++语言中是一种让你无中生有的方法。构造函数能初始化对象,而缺省构造函数则可以不利用任何在建立对象时的外部数据就能初始化对象。有时这样的方法是不错的。例如一些行为特性与数字相仿的对象被初始化为空值或不确定的值也是合理的,还有比如链表、哈希表、图等等数据结构也可以被初始化为空容器。 但不是所有的对象都属于上述类型,对于很多对象来说,不利用外部数据进行完全的初始化是不合理的。比如一个没有输入姓名的地址簿对象,就没有任何意义。在一些公司里,所有的设备都必须标有一个公司ID转载 2011-01-17 11:36:00 · 678 阅读 · 0 评论 -
C/C++ 语言中的表达式求值
裘宗燕:C/C++ 语言中的表达式求值 经常可以在一些讨论组里看到下面的提问:“谁知道下面C语句给n赋什么值?” m = 1; n = m+++m++; 最近有位不相识的朋友发email给我,问为什么在某个C++系统里,下面表达式打印出两个4,而不是4和5: a =转载 2011-08-30 20:16:39 · 459 阅读 · 0 评论 -
MS-VC 使用MAP文件快速定位错误行 .
**********************************************************************************************************************************转载 2011-07-05 16:32:34 · 1976 阅读 · 0 评论 -
C++虚函数解析(一)
关注问题:虚函数的作用 虚函数的实现原理 虚函数表在对象布局里的位置 虚函数的类的sizeof 纯虚函数的作用多级继承时的虚函数表内容 虚函数如何执行父类代码 多继承时的虚函数表定位,以及对象布局 虚析构函数的作用 虚函数在QT的信号与槽中的应用 虚函数与inline修饰符,static修饰符 啰嗦两句虚函数在C++里的作用是在是非常非常的大,很多讲述C++的文章都会讲到它,要用好C++,就一定要学好虚函数。网络上可以google到很多很多关于它的文章,这一次的学习,我不准备去只是简单的阅读了解那些文章,而转载 2011-05-25 21:06:00 · 564 阅读 · 0 评论 -
C++深入虚函数(二)
虚函数的作用 虚函数的实现原理 虚函数表在对象布局里的位置 虚函数的类的sizeof 纯虚函数的作用 多级继承时的虚函数表内容 虚函数如何执行父类代码 多继承时的虚函数表定位,以及对象布局虚析构函数的作用 虚函数在QT的信号与槽中的应用 虚函数与inline修饰符,static修饰符 前面我们尝试了一个简单的例子,接下来尝试一个多级继承的例子,以及一个多继承的例子。主要涉及到以下问题:多级继承时虚函数表的内容是如何填写的,如何在多级继承的情况下调用某一级父类里的虚函数,以及在多继承(多个父类)的情况下的对象转载 2011-05-25 22:11:00 · 729 阅读 · 0 评论 -
C++虚函数深入(三)
虚析构函数大家都知道,在C++里需要自己严格管理好资源的分配和回收。通常情况下,在一个对象被析构的时候,是要由其释放其申请到的各种资源的。最常见的,当然就是内存资源啦。当只有一个类的时候,我们可以不用考虑太多,只要在析构函数里检查并释放所有申请到的资源即可。但是在这个类继承了一个抽象接口基类时,就有点点不一样了。让我们看看类的析构过程:在大多数的类的使用时,通常都是直接删除该类的实例对象,然后该类的析构函数就会被调用,从而使得这个类在析构函数里执行的资源释放代码被执行到。如果这个类继承了其他类,那么编译器还转载 2011-05-25 22:12:00 · 662 阅读 · 0 评论 -
STL迭代器学习
STL中心思想在于:将数据容器containers和算法algorithms分开,彼此独立设计,最后再 以一贴胶着剂将它们撮合在一起。迭代器是一种行为类似指针的对象。每一种STL容器都提供有专属迭代器,避免暴露太多的容器实现细节,将所有实现细节封装起来。原创 2011-05-22 19:19:00 · 579 阅读 · 0 评论 -
Traits技法在函数模板中的使用
Traits:类型的else-if-then机制简单来说,traits的重要性就在于能在编译时间(compile-time)通过类型(type)确定函数的调用,尽管我们往往习惯于在运行时间(run-time)通过值(value)来确定【traits是类型驱动(type-driven),依照具体的类型产生相应的模板类或模板函数,而比如多态则是在运行时间通过值来确定调用函数的,会付出性能上的代价】。更妙的是,traits能让您根据其产生环境(context)作出类型判定,使得代码更清晰可读,更易于维护,这正应了原创 2011-05-21 23:22:00 · 645 阅读 · 0 评论 -
Traits 学习笔记(一)
Traits:一种聚合了有用的类型和常数、用以替代模板参数的类,成功地实践了“extra level of indirection(额外的中间层)”这句可以解决所有软件难题的名言。(A class used in place of template parameters. As a class, it aggregates useful types and constants; as a template, it provides an avenue for that "extra level of ind原创 2011-05-21 11:10:00 · 739 阅读 · 0 评论 -
memcpy() 和memmove()区别
[code=C/C++]/****memcpy.c - contains memcpy routine** Copyright (c) Microsoft Corporation. All rights reserved.**Purpose:* memcpy() copies a source memory buffer to a destination buffer.* Overlapping buffers are not treated specially, so原创 2011-03-17 13:41:00 · 651 阅读 · 0 评论 -
void 指针小结
http://hi.baidu.com/%B3%CB%B7%E7%CC%A4%C0%CB2008/blog/item/ff1066faeb5a19929e5146ad.html 今天在看memcpy函数原型的时候遇到void指针,我有些地方不明白,就从网上搜集了一些资料,然后总结一下。 先来看下memcpy函数的原型: void * memcpy ( void * destination,转载 2011-11-24 14:53:14 · 534 阅读 · 0 评论