
C++
phoebin
这个作者很懒,什么都没留下…
展开
-
强制转换函数(const_cast,reinterpret_cast,static_cast,dynamic_cast)
C 风格(C-style)强制转型如下: (T) expression // cast expression to be of type T 函数风格(Function-style)强制转型使用这样的语法: T(expression) // cast expression to be of type T 这两种形式之间没有本质上的不同,它纯粹就是一个把括号放在哪的问题。我把这两种形式称为旧风格(o转载 2009-02-05 16:25:00 · 2589 阅读 · 0 评论 -
const、volatile、mutable的用法
const修饰普通变量和指针const修饰变量,一般有两种写法: const TYPE value; TYPE const value; 这两种写法在本质上是一样的。它的含义是:const修饰的类型为TYPE的变量value是不可变的。对于一个非指针的类型TYPE,无论怎么写,都是一个含义,即value值不可变。 例如: const int nValue; //nValu转载 2009-02-17 13:53:00 · 1555 阅读 · 0 评论 -
初始化列表+init()
对象的初始化,可以通过初始化列表给数据成员赋值,还可以在构造函数里面写代码给成员赋值。相比之下,推荐使用初始化列表的方法,除非类里面包含好多个数据成员,这会显得纷繁凌乱,维护起来不好看,做LTD的代码里面,凡遇此种情况,就在类里面多加一个init()函数,来对这众多的数据成员复制,构造函数和拷贝构造函数里面加上这么一行init()就ok了。myClass::myClass(const &原创 2008-11-28 16:05:00 · 863 阅读 · 0 评论 -
有指针成员变量,要注意莫要MLK了
Class myString{ public: myString(const char *value); ~myString();private: char *data;} ;最简单的类myString,但是值得注意的是它里面有个指针成员char * data。先来写清楚这个构造函数——my原创 2008-11-28 14:58:00 · 747 阅读 · 0 评论 -
static关键字
先从内存说起,最精简的嵌入式系统也要划分出以下这些section:代码段全局数据段堆栈 再说c++里面的static关键字,分五个部分:1. 静态全局变量2. 静态局部变量3. 静态数据成员4. 静态非成员函数5. 静态成员函数 1. 静态全局变量static关键字放在全局变量前面,这个全局变量就是静态全局变量了。static int A原创 2008-11-28 21:40:00 · 727 阅读 · 0 评论 -
继续说初始化列表
在一些情况下,初始化列表可以做到构造函数做不到的事情:1. 类里面有const类型的成员,它是不能被赋值的,所以需要在初始化列表里面初始化它;2. 引用类型的成员(也就是名字成员,它作为一个现有名字的别名),也是需要在初始化列表里面初始化的,目的是为了生成了一个其名字成员在类外可以被修改而在内部是只读的对象;3. 需要调用基类的构造函数,且此基类构造函数是有参数的;4. 类里面有其原创 2008-11-28 17:35:00 · 868 阅读 · 0 评论 -
Flyweight模式
Flyweight享元设计模式是一种结构型设计模式,它主要解决的问题是:由于(同类)对象的数量太大,采用面向对象时给系统带来了难以承受的内存开销。比如有这样一个场景:一个停车场中有1000辆汽车,我们所定义的汽车对象占用内存0.3M,那么要实例化1000辆就是300M。由此可见,在这种情况下采用一般的面向对象方式出现了大量细粒度的对象会很快充斥在系统中,从而带来很高的运行是代价(这里指的代价是内存转载 2009-02-06 16:01:00 · 4485 阅读 · 0 评论 -
STL vector用法介绍
介绍这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作。本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和for_each()中的使用。通过阅读这篇文章读者应该能够有效地使用vector容器,而且应该不会再去使用C类型的动态数组了。 Vector总览vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种转载 2009-02-05 16:15:00 · 252893 阅读 · 25 评论 -
结构体对齐
#pragma pack(4) class TestB { public: int aa; char a; short b; char c; }; int nSize = sizeof(TestB); 这里nSize结果为12,在预料之中。 现在去掉第一个成员变量为如下代码: #pragma pack(4) class TestC { pu原创 2009-02-18 21:35:00 · 983 阅读 · 0 评论