标题:[求助]求助, 问一个关于const很弱的问题
只看楼主
abc911
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2007-5-2
 问题点数:0 回复次数:7 
[求助]求助, 问一个关于const很弱的问题

#include <iostream>
using namespace std;

class mytime
{
public:
mytime(int h = 0, int m = 0);
void gettime(int& h, int& m) const;
//
mytime operator+(int min) const;

bool operator==(const mytime& t) const;
private:
int hour;
int minute;
};



mytime::mytime(int h, int m) :
hour(h), minute(m)
{}

void mytime::gettime(int& h, int& m) const{
h = hour;
m = minute;
}
///////////////////////////////////////////////////////////////////
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
mytime mytime::operator+(int min) const
{
mytime tmp(0,0);

tmp.minute = hour*60 + minute + min;

tmp.hour = tmp.minute / 60;
tmp.minute %= 60;

return tmp;
}




//== == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == ==
bool mytime::operator==(const mytime& t) const
{
if(t.hour == hour && t.minute == minute) return true;
else return false;
}


int main(){
int hh, mm;

mytime a(12, 20);

mytime b;

b=a+100;

b.gettime(hh,mm);
cout << hh << \":\" << mm;

}

bool mytime::operator==(const mytime& t) const

在这一行中有两个const, 我知道第一个const表示 mytime& t的t是不能更改的意思,但是第二个const是什么意思呢, 如果去掉地2个const会有什么不好呢?



搜索更多相关主题的帖子: private include public minute 
2007-05-02 01:51
天下第二刀
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:157
专家分:0
注 册:2007-1-8
得分:0 

顶下~

[此贴子已经被作者于2007-5-2 10:59:42编辑过]


不知天堂有没有后门~~~
2007-05-02 10:43
天下第二刀
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:157
专家分:0
注 册:2007-1-8
得分:0 
  这个应该是不能修改类对象的数据成员的值

[此贴子已经被作者于2007-5-2 22:19:39编辑过]



不知天堂有没有后门~~~
2007-05-02 11:05
yushui
Rank: 3Rank: 3
等 级:论坛游民
威 望:7
帖 子:1355
专家分:22
注 册:2006-7-19
得分:0 
函数原型和定义被指定为const ,不能修改对象

fighting!from now on!
2007-05-02 12:29
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
得分:0 
第2个const表示const成员函数,它是修饰this指针的。

简单的说:如果不加这个const修饰,那么this是非const的(classType *this),意味着非const类对象可以调用该函数,但是const对象不能。
加上const修饰,那么this是const的(const classType *this),意味着const或者非const的类对象均可调用该函数。

这样的行为本质是因为可以用非const对象初始化const对象,但是不能用const对象初始化非const对象!

[此贴子已经被作者于2007-5-3 8:43:30编辑过]


Fight  to win  or  die...
2007-05-02 23:59
yushui
Rank: 3Rank: 3
等 级:论坛游民
威 望:7
帖 子:1355
专家分:22
注 册:2006-7-19
得分:0 
可以用非const对象初始化const对象,但是
不能用非const对象初始化const对象
一样的哦

fighting!from now on!
2007-05-03 08:25
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
得分:0 

改过来了,不细心,呵呵


Fight  to win  or  die...
2007-05-03 08:43
未入流小菜鸟
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2007-5-1
得分:0 

学习了。

拿点积分,闪人。

2007-05-03 21:28



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-136506-1-1.html




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

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