虚继承、虚基类
摘要:运行结果: 注意SafaBed的成员初始化列表中,需要显式初始化虚基类furniture。 如果把Bed和Safa类定义的时候的2个virtual去掉,那么也必须修改SafaBed的成员初始化列表,需要删除对furniture的初始化,否则编译器提示:对“furniture”的访问不明确。运行结果为: 详细分析: 虚继承就是引入了虚基类的继承。引入虚基类的目的是为了解决类...
阅读全文
posted @
2010-04-23 07:56
︶ㄣ第二名
阅读(2409)
推荐(0)
什么应该放在头文件?何为外连接?
摘要:什么应该放在头文件里 头文件为相关声明提供了一个集中存放的位置。头文件一般包含类的定义、枚举的定义、extern变量的声明、函数的声明、const int的定义、inline函数的定义。使用或者定义这些实体的文件要包含适当的头文件。头文件用于声明,而不用于定义 当设计头文件时,记住定义和声明的区别是很重要的。定义只可以出现一次,而声明可以出现多次。下列语句是定义,所以不应该放在头文件里:[代码...
阅读全文
posted @
2010-04-13 19:00
︶ㄣ第二名
阅读(2600)
推荐(0)
程序堆和栈区别详解,char[]和char*区别
摘要:char *c = "abc"和char c[]="abc",前者改变其内容程序是会崩溃的,而后者完全正确。代码 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--1#include<iostream>2usingnamespacestd;3...
阅读全文
posted @
2010-04-11 08:36
︶ㄣ第二名
阅读(1223)
推荐(0)
【你不知道】表达式中的隐式类型转换、无名对象作为函数实参
摘要:代码 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--1intarray[]={1,2,3,4,5};2#defineTOTAL_ELEMENTS(sizeof(array)/sizeof(array[0]))34#include<iostrea...
阅读全文
posted @
2010-04-09 17:07
︶ㄣ第二名
阅读(628)
推荐(0)
explicit构造函数和非explicit构造函数
摘要:代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--1#include<iostream>2usingnamespacestd;34classBase{5public:6explicitBase(inti=0):ival(i)7{8cout...
阅读全文
posted @
2010-04-05 17:32
︶ㄣ第二名
阅读(346)
推荐(0)
预编译头文件详解
摘要:今天在改一个很大的程序,慢慢看,慢慢改。突然发现一个.c文件,里面什么也没有,就几个头文件,我一看,我靠,这不是把简单的问题搞复杂了吗,随手删掉那个c文件。结果不能编译了,我靠:fatal error C1083: Cannot open precompiled header file: \'Debug/v13_3.pch\':No such file or directory怎么rebuild ...
阅读全文
posted @
2010-04-01 14:06
︶ㄣ第二名
阅读(513)
推荐(0)
C/C++小小知识点
摘要:memcpy void * memcpy ( void * destination, const void * source, size_t num ); 二进制拷贝strcpy char * strcpy ( char * destination, const char * source ); 不能用于string,可用于char *和char []strcat char * strc...
阅读全文
posted @
2010-03-31 09:58
︶ㄣ第二名
阅读(473)
推荐(0)
Effective C++ 小笔记:条款18-25(第四章 设计与声明)
摘要:条款20:宁以pass-by-reference-to-const 替换 pass-by-value 一般而言,pass-by-value 需要耗费调用拷贝构造函数和析构函数的代价。当返回值以value返回时也同样。 以by reference 方式传递参数还可以避免slicing(对象切割问题)。当一个derived class 对象以by value方式传递给一个函数类型为base cla...
阅读全文
posted @
2010-03-10 20:02
︶ㄣ第二名
阅读(381)
推荐(0)
C++定义隐式转换函数
摘要:C++中单参数构造函数若不声明为explict,在合适的场合可以产生隐式转换:由成员变量类型转换为类类型。 下面的代码展示如何实现反向的转换:[代码] 另外,两个或更多参数的non-explicit构造函数,如果所有形参都提供了默认实参,那么在需要一个类类型对象的表达式位置,提供一个first形参类型的对象,编译器也执行隐式转换,转换得到一个类对象。 如,构造函数Rational(int n...
阅读全文
posted @
2010-03-08 22:25
︶ㄣ第二名
阅读(3806)
推荐(0)
Effective C++ 小笔记:条款13-17(第三章)
摘要:常用的资源有:内存、文件描述器(file descriptor)、互斥锁(mutex locks)、图形界面中的字体和笔刷、数据库连接、以及网络sockets。这些资源一般动态创建和分配,也就是一个指针。不论哪一种资源,重要的是,当你不再使用时,必须将它还给系统。条款13:以对象管理资源 把资源放进对象里,我们便可以依赖C++的 析构函数 自动调用机制,确保资源被释放。对象在作用域结束时,其析构...
阅读全文
posted @
2010-03-08 21:31
︶ㄣ第二名
阅读(331)
推荐(0)
Effective C++ 小笔记:条款7-12
摘要:条款7:为多态基类声明virtual析构函数 C++明白指出,当derived class对象经由一个base class指针被删除,而该base class带着一个non-virtual析构函数,其结果未有定义。事实上,derived对象被局部销毁,只有其base class部分内存被正确释放。造成资源泄漏,败坏数据结构。 任何class只要带有virtual函数,都几乎确定应该也有一个vi...
阅读全文
posted @
2010-03-06 21:33
︶ㄣ第二名
阅读(319)
推荐(1)
Effective C++ 小笔记:条款3-6
摘要:Effective C++ 条款31、在一个函数声明式内,const可以和函数返回值、各参数、函数自身(如果是成员函数)产生关联。2、许多人漠视一个事实:两个成员函数如果只是常量性(constness)不同,可以被重载。这实在是一个重要的C++特征。包括const修饰成员函数本身,或者成员函数的返回值。3、const成员函数不可以更改对象内任何non-static成员变量。4、在一个成员函数里,s...
阅读全文
posted @
2010-03-04 08:35
︶ㄣ第二名
阅读(537)
推荐(0)
privte的析构函数和构造函数
摘要:C++中是不允许virtual 构造函数的,如果在构造函数前加virtual。以vc6为例,编译器报错为:'inline' is the only legal storage class for constructors。虽然不明白这个跟inline有什么关系,但是错误是肯定的。构造函数和析构函数都可以是private的,这种情况下编译通过,但是该类无法被实例化,即使继承也不行例如:class A...
阅读全文
posted @
2010-03-01 21:21
︶ㄣ第二名
阅读(370)
推荐(0)
C++ 中的强制类型转换
摘要:显示转换也成为强制类型转换(cast),包括以下列名字命名的强制类型转换操作符:static_cast、dynamic_cast、const_cast、reinterpret_cast。1. const_cast const_cast<TYPE> (object); The const_cast keyword can be used to remove the const or ...
阅读全文
posted @
2010-01-29 09:12
︶ㄣ第二名
阅读(2350)
推荐(0)
unsinged int,unsigned long,size_t还是std::size_t?
摘要:首先四种类型都是无符号类型,是用以表示元素个数或者数组索引的最佳类型。在作为函数参数时,不需像有符号类型那样检测值是否小于零。1. ::size_t还是std::size_t请使用std::size_t,因为你处于C++的世界。在此,所有C++标准库组件用以表示元素个数的类型(比如size()或者operator[])都是std::size_t。std::size_t count = arra...
阅读全文
posted @
2010-01-29 08:29
︶ㄣ第二名
阅读(1284)
推荐(0)
C++中迭代器
摘要:C++中的容器 标准序列容器:vector、string、deque、list 标准关联容器:set、multiset、map、multimap迭代器的分类 根据迭代器所支持的操作,可以把迭代器分为5类。 1、输入迭代器:是只读迭代器,在每个被遍历的位置上只能读取一次。 2、输出迭代器:是只写迭代器,在每个被遍历的位置上只能被写一次。 3、前向迭代器:兼具输入和输出迭代器的能力,但是它...
阅读全文
posted @
2010-01-16 20:57
︶ㄣ第二名
阅读(2298)
推荐(0)
special situation——两个short型变量相加超出short的表示范围
摘要:short型所能表示的数的个数为(32位机器):2^16 = 65536。若为unsigned short表示范围为:0到65535。若为有符号的,表示范围为:-32768到32767,当为32767时,符号位为0,其余15位为1;当为-32767时,符号位为1,其余15位为1;因为是有符号数,所以有正0和负0之分,负零用于表示-32768。 下面是一段测试程序,通过输出结果可以看出这个spec...
阅读全文
posted @
2009-12-21 19:15
︶ㄣ第二名
阅读(1545)
推荐(0)
C++的2个易错点
摘要:问:void print( int arr[][], int size );这个函数声明是对是错? 当然是错的了,这个根本不是什么函数声明的问题,而是数组声明的问题,int arr[][]这个声明就是错的,后面一维的长度不可省略!问:char* ScreenInit(int height = 120, int width, char background);这个声明如何? 错,要是为形参hei...
阅读全文
posted @
2009-12-09 15:40
︶ㄣ第二名
阅读(420)
推荐(0)
一个在线的C++帮助文档网站
摘要:http://www.cplusplus.com/ //C++参考http://www.cppreference.com/wiki/start //C++参考http://www.woyouxian.net/z/c++/toc.html //在线版本C++ primer Edition 4
阅读全文
posted @
2009-11-19 13:47
︶ㄣ第二名
阅读(3106)
推荐(0)