函数后面加constant是什么意思呀

2024-12-27 20:21:43
推荐回答(3个)
回答1:

首先,是加const不是constant。
函数后面加const是表明这个函数不会更改class的状态,即class内各成员变量的值。编译器如果发现某个const函数里改变了成员变量的值会报错。比如下面这个例子。
struct A {
int i;
void set(int v) {i = v;} //不能加const,因为i值改变了。
int value() const {return i;} //正确,i值没有改变。
int value2() const {return i++;} //错误,因为i值改变了。必须将const去掉。
};

如果函数比较复杂时,比如并不直接改变某个值,但是调用了其它函数,编译器怎么判断函数是否const呢。可以看下面的例子。

struct B {
A a; //B里包含一个A类成员。
int func1() const {return a.value();} //正确,所调用的a.value()也是一个const函数。
int func2() const {return a.value2();} //错误,a.value2()不是const函数。
};

也就是说,在const函数里只能调用成员的const函数以保证成员状态不会改变。

所以,在设计类的函数里,区别const和非const函数并标记出来是个好习惯,既保证自己不会对类误操作,也可以明示别人调用你的类里哪些会改变类状态。

回答2:

使用CONST说明的成员函数,称为常成员函数。只有常成员函数才有权使用常量或常对象,没有使用的CONST说明的成员不能使用常对象。
const成员函数和const对象

实际上,const成员函数还有另外一项作用,即常量对象相关。对于内置的数据类型,我们可以定义它们的常量,用户自定义的类也一样,可以定义它们的常量对象。例如,定义一个整型常量的方法为:

const int i=1 ;

同样,也可以定义常量对象,假定有一个类classA,定义该类的常量对象的方法为:

const classA a(2);

这里,a是类classA的一个const对象,"2"传给它的构造函数参数。const对象的数据成员在对象寿命期内不能改变。但是,如何保证该类的数据成员不被改变呢?

为了确保const对象的数据成员不会被改变,在C++中,const对象只能调用const成员函数。如果一个成员函数实际上没有对数据成员作任何形式的修改,但是它没有被const关键字限定的,也不能被常量对象调用。
调用规则
对象 成员函数 对/错

5、 const const 对

6、 const non-const 错

7、 non-const const 对

8、 non-const non-const 对

回答3:

constant

1.常量
编程词汇不完全手册(英中对照版) - Po...
constant 常量
2.常数 ②恒定的,不变的
医学英语词汇(C2) - 乐学网翻译频道 ...
constant ①常数 ②恒定的,不变的
3.恒定的,不断的,经常的
商务英语考试词汇练习(3)—优网培训ueu...
constant adj. 恒定的,不断的,经常的
既然是函数后面的应该是常量的意思