- 博客(7)
- 收藏
- 关注
翻译 成员初始化表
1.对于非类数据成员的初始化或赋值,除了两个例外,两者在结果和性能上都是等价的。 两个例外是指任何类型的const和引用数据成员。const 和引用数据成员也必须是在成员初始化表中被初始化 否则 就会产生编译时刻错误。例如 下列构造函数的实现将导致编译 时刻错误:class ConstRef { public: ConstRef( int ii ); private: int i; const int ci; int &ri; }; ConstRef:: Con
2011-01-10 17:43:00 445
转载 C/C++堆、栈及静态数据区详解
<br />五大内存分区<br />在C++ 中,内存分成5 个区,他们分别是堆、栈、自由存储区、全局/ 静态存储区和常量存储区。<br />栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。<br />堆,就是那些由new 分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new 就要对应一个delete 。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。<br />自由存储区,就是那些由mallo
2011-01-06 11:18:00 317
翻译 const 成员函数
<br />一般来说,任何一个类如果期望被广泛使用,就应该把那些不修改类数据成员的成员函数声明为const 成员函数,但是,把一个成员函数声明为const 并不能阻止程序员可能做到的所有修改动作, 把一个成员函数声明为 const 可以保证这个成员函数不修改类的数据成员,但是 如果该类含有指针 那么在 const 成员函数中就能修改指针所指的对象 编译器不会 把这种修改检测为错误 这常常令 C++初学者吃惊 例如 <br /> <br /> #include <cstring> <br /> cl
2011-01-06 11:08:00 257
原创 C++ 关键字
1.volatile volatile 修饰符的主要目的是提示编译器 该对象的值可能在编译器未监测到的情况下被 改变 因此编译器不能武断地对引用这些对象的代码作优化处理。 将成员函数声明为volatile volatile限定修饰符在 3.13 节介绍 如果一个类对象的值可能被修改的方式是编译器无法控制或检测的。例如 如果它是表示 I/O端口的数据结构则把它声明为 volatile 与 const 类对象类似 对于一个 volatile类对象 只有 volatile 成员函数
2011-01-06 11:05:00 227
原创 读高质量C++编程指南
1.是否应将 void Func(int x) 改写为 void Func(const int &x),以便提 高效率?完全没有必要,因为内部数据类型的参数不存在构造、析构的过程,而复制也 非常快, “值传递”和“引用传递”的效率几乎相当。
2011-01-04 17:44:00 295
原创 类中的常量
<br />class A<br />{<br />public:<br /> A();<br />private:<br /> const int a = 4;//wrong, you can't init const data member, it only init in the init list(类的构造函数的初始化列表中)<br /> const int a;<br />}
2011-01-04 16:28:00 257
原创 静态数据成员和静态成员函数
对于非静态数据成员,每个类对象都有自己的拷贝而静态数据成员对每个类类型只有一个拷贝静态数据成员,只有一份由该类类型的所有对象共享访问。同全局对象相比使用静态数据成员有两个优势 1 静态数据成员没有进入程序的全局名字空间因此不存在与程序中其他全局名字冲突的可能性 2 可以实现信息隐藏静态成员可以是private 成员而全局对象不能静态成员函数:静态成员函数一般只能访问静态成员变量,如果要访问非静态成员变量的话,只能访问某一个对象的非静态成员变量和静态成员函数。可以传一个
2011-01-04 10:47:00 264
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人