我爱Aspx >> VC.Net >> 非议MFC(二)逻辑上的不完备补上这些缺失的函数不过是举手之劳,“不因善小而不为”这句话不应该只挂在嘴上!
2.前后不一致
<AFXWIN.H>
class CPoint : public tagPOINT
{
CRect operator+(const RECT* lpRect) const; 1]
};
typedef const RECT* LPCRECT;
class CRect : public tagRECT
{
CRect operator+(LPCRECT lpRect) const; 2]
void operator+=(LPCRECT lpRect); 3]
void operator&=(const RECT& rect); 4]
};
由于LPCRECT的类型定义放在中间,[1][2]的形参采取了形式不同但意义相同的声明方式。
[3][4]是相似的运算符重载,却使用了不同的形参传递方式。
每个人可以有自己的代码风格,但在同一个文件中,或者至少在同一个类中,总应该使用统一的风格吧!
3.妨碍语法完整性
<AFXWIN.H>
class CRect : public tagRECT
{
void operator=(const RECT& srcRect);
};
众所周知,在C和C++中,任何一个表达式的本身都是有值的,例如:a=100就是一个表达式,它的值是100。有了这个逻辑前提,链式表达式才能合理存在。在b=a=100;中,准确地说,是把a=100这个表达式的值100赋值给b。
而CRect类中,赋值运算符的返回类型被错误地设定成void,于是CRect对象之间的赋值表达式没有了值,链式表达式也失效了。
【我对这篇文章有话说?】
实战DeviceIoControl 之一:通过..[05-21]
Windows中文输入法的实现[05-21]
用Delphi 6开发ASP上传组件详解[05-21]
”新快乐时光“再解[05-21]
Notes中有关C++API的注意事项[05-21]
Domino SMTP设置[05-21]
游戏修改器[05-21]
windows API简介--用户接口(系列..[05-21]
一个应用二叉搜索树实现的字典,..[05-21]
一个逻辑推理类--从规则推测前提..[05-21]