GuruoftheWeek#6:正确使用co t

文章作者 100test 发表时间 2007:09:11 12:39:24
来源 100Test.Com百考试题网


问题:
const是写出更安全的代码的一个利器.而且它还可以帮助编译器进行优化.应该尽可能的多用...但是什么才叫做"尽可能"呢?
不对下面程序的结构和其他风格问题作挑剔,因为它仅仅是用来做示例说明.请只在合适的地方简单的加上或删除"const"(包括一些变量和相关的关键字).附加题是:哪些地方将使程序由于const的错误使用而产生编译错误或不确定的(undefined)结果?

class Polygon {
public:
Polygon() : area_(-1) {}

void AddPoint( const Point pt ) {
InvalidateArea().
points_.push_back(pt).
}

Point GetPoint( const int i ) {
return points_[i].
}

int GetNumPoints() {
return points_.size().
}

double GetArea() {
if( area_ < 0 ) // if not yet calculated and cached
CalcArea(). // calculate now
return area_.
}

private:
void InvalidateArea() { area_ = -1. }

void CalcArea() {
area_ = 0.
vector::iterator i.
for( i = points_.begin(). i != points_.end(). i )
area_ = /* some work */.
}

vector points_.
double area_.
}.

Polygon operator ( Polygon&. lhs, Polygon&. rhs ) {
Polygon ret = lhs.
int last = rhs.GetNumPoints().
for( int i = 0. i < last. i ) // concatenate
ret.AddPoint( rhs.GetPoint(i) ).
return ret.
}

void f( const Polygon&. poly ) {
const_cast(poly).AddPoint( Point(0,0) ).



相关文章


阳历到阴历的转换
GuruoftheWeek#6:正确使用co t
陷阱技术探秘──动态汉化Windows技术的分析
非ROOT用户能访问另一个非ROOT用户的文件
奇怪的返回:ask:ask
Linux操作系统下C开发环境的构成与安装
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛