Item2:尽量以const,enum,inline替换#define原因:1, #define ASPECT_RATIO 1.63 编译错误时产生魔数,应以const double Aspect_Ratio = 1.63替换 2, #define不能提供作用域,如某个类的常量 ...
分类:
编程语言 时间:
2014-07-07 21:32:51
阅读次数:
235
这个条款应该和第五个放在一起编译器默认生成1 无参构造函数,2 析构函数3 拷贝构造函数4 赋值预算符当我们不需要,就要显示的告诉大家我们不需要。方法:自己声明这个函数为private,单不要定义它。原因:1 自己声明这个函数,编译器就不会为我们生成这个函数 2 声明成private,就不会被...
分类:
编程语言 时间:
2014-07-07 13:33:21
阅读次数:
232
#说明:博客园对Markdown支持有问题,请看[开源中国](http://my.oschina.net/grnick/blog/280866)。# 学习《Effective C++》 #@date: 2014-06-16 #@author: gerui #@email: forgerui...
分类:
编程语言 时间:
2014-07-01 22:00:57
阅读次数:
227
这似乎很明显。如果base class的destructor不是virtual,当其derived class作为基类使用,析构的时候derived class的数据成员将不会被销毁。举个例子 我们有个交通工具的类作为基类, 它的析构函数不是virtualclass transportTool{ ....
分类:
编程语言 时间:
2014-07-01 10:27:30
阅读次数:
192
《EffectiveC#》这本书讲了一些关于C#语言的使用技巧和经验. 该系列文章是备忘录和自己的一些见解.程序猿们最喜欢这类问题了,欢迎讨论~菜单Item 1 使用属性取代公共成员变量Item 2 优先考虑readonly而不是constItem 3 使用is/as取代转换操作符来进行对象类型转换...
分类:
其他好文 时间:
2014-06-30 14:57:30
阅读次数:
319
(一)
class Shape {
public:
virtual void draw() const = 0;
virtual void error(const string& msg);
int objectID() const;
};
class Rectangle : public Shape {...};
class Ellipse : publi...
分类:
编程语言 时间:
2014-06-30 00:55:48
阅读次数:
409
请注意:(1)确保当对象自我赋值时operator=有良好行为。其技术包括比较“来源对象”和“目标对象”的地址、精心周到的语句顺序、以及copy-and-swap。(2)确定任何函数如果操作一个以上的对象,而其中多个对象是同一个对象时,其行为仍然正确。
分类:
编程语言 时间:
2014-06-29 20:21:52
阅读次数:
157
请记住:(1)Copying函数应该确保复制“对象内的所有的成员变量”及“所有base class成分”。(2)不要尝试以某个copying函数实现另一个copying函数。应该将共同机能放在第三个函数中,并有两个copying函数共同调用。
分类:
编程语言 时间:
2014-06-29 20:18:48
阅读次数:
236
(一)
下面这段代码:
int x;
void someFunc()
{
double x; //local variable
std::cin>>x; //read a new value to local x
}
这个指涉的是local变量x,而不是global变量x,因为内存作用域会的名称遮掩外围作用域的名称。当编译器处于someFunc的作用域内并遭遇...
分类:
编程语言 时间:
2014-06-28 07:58:25
阅读次数:
281
1 c++ 类的数据成员的初始化发生在构造函数前class InitialData{ public: int data1; int data2; InitialData(int a, int b) { ...
分类:
编程语言 时间:
2014-06-27 22:31:42
阅读次数:
375