| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1419 人关注过本帖
标题:关于const的用法
只看楼主 加入收藏
karlzhouzhi
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2005-12-25
收藏
 问题点数:0 回复次数:11 
关于const的用法
double Area() const {return 0.0}//z这了为什么要加const,不加可以么
搜索更多相关主题的帖子: const 用法 Area double return 
2006-02-10 21:35
karlzhouzhi
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2005-12-25
收藏
得分:0 

接上面
class Shape
{
public:
Shape(double x,double y){xCoord=x,yCoord=y;}
virtual double Area() const{return 10.0;}//有什么作用
protected:
double xCoord,yCoord;
};

class Circle:public Shape
{
public:
Circle(double x,double y,double r):Shape(x,y),radius(r){}
double Area() const{return 3.14*radius*radius;}//有什么作用
protected:
double radius;
};

class Rectangle:public Shape
{
public:
Rectangle(double x1,double y1,double x2,double y2):Shape(x1,y1),x2Coord(x2),y2Coord(y2){}
double Area() const{return fabs((xCoord-x2Coord)*(yCoord-y2Coord));} //const有什么作用
protected:
double x2Coord,y2Coord;
};

void fun(Shape &s)
{
cout<<s.Area()<<endl;
}

2006-02-10 23:03
karlzhouzhi
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2005-12-25
收藏
得分:0 
上面的函数应该是这样的,我打错了
void fun(const Shape &s)
{
cout<<s.Area()<<endl;
}
2006-02-10 23:05
yuki
Rank: 2
等 级:新手上路
威 望:5
帖 子:508
专家分:0
注 册:2005-2-4
收藏
得分:0 
在一个类中的成员函数后面加const关键字,旨在阻止程序修改类中的变量(无论是protected、private还是public下声明的变量),若该函数对其变量进行修改操作,则会导致编译错误!

我们都在命运湖上荡舟划桨,波浪起伏使我们无法逃离孤行;如果我们迷失方向,波浪将指引我们穿过另一天曙光
2006-02-11 09:39
karlzhouzhi
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2005-12-25
收藏
得分:0 
那要是我把第一个const去掉,那对Area中输出的结果有影响么??
2006-02-11 09:56
yuki
Rank: 2
等 级:新手上路
威 望:5
帖 子:508
专家分:0
注 册:2005-2-4
收藏
得分:0 

没有影响。


我们都在命运湖上荡舟划桨,波浪起伏使我们无法逃离孤行;如果我们迷失方向,波浪将指引我们穿过另一天曙光
2006-02-11 10:06
DarkHero
Rank: 1
等 级:新手上路
威 望:2
帖 子:191
专家分:0
注 册:2006-1-14
收藏
得分:0 

那表示该函数不会修改类的数据成员,所以常量对象可以安全调用该函数,如果去掉,就无法被常量对象调用了


for( ; me.alive() ; ) { 淡泊名利,志存高远 } //Forever
2006-02-11 13:25
怪盗KID
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2006-2-15
收藏
得分:0 
const是只读,加了之后防止程序员误操作,对只读函数进行修改
2006-02-15 22:57
热情依然
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:22
帖 子:715
专家分:0
注 册:2005-4-5
收藏
得分:0 
还有加了const的对象只可以调用const的成员函数

c++/C + 汇编 = 天下无敌
2006-02-16 12:54
dang800919
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2005-12-5
收藏
得分:0 

还有一点 在类的成员函数中 const 需要加在 函数声明和定义之间
如果你的定义在类体外 那么 const 需要在函数 double Area() 声明后 定义的时候也需要加const
1.只有被声明为 const的成员函数才能被一个const类对象调用
2.修改类数据成员的函数声明为const是非法的.
3.任意一个类如果被广泛使用 ,就应该把那写不修改类数据成员的成员函数声明为const (const何时使用)
4.const成员函数 可以被相同参数表的非const成员函数重载
以上引用 primer c++ 3tr p517.

2006-02-20 16:36
快速回复:关于const的用法
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015315 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved