我需要写一个新方法。提供以下代码:
const Class * func() const;
但是当类和函数都声明为常量时它意味着什么呢?
答案 0 :(得分:3)
const Class * func() const;
const Class*
是返回类型。它表示此函数返回指向const Class
的指针。所以无论谁调用这个函数都会收到一个指针,但是他们无法修改它所指向的对象。
声明末尾的const
表示此成员函数不会修改正在调用的对象的状态。也就是说,它不会修改this
指向的对象。实际上,如果您尝试修改mutable
中的任何数据成员(不是func
),编译器会告诉您。
答案 1 :(得分:2)
const Class * func() const;
^^^^^ ^^^^^
1 2
第一个const
表示返回类型为const Class*
。
第二个意思是,方法func
不会更改其班级成员。
每段§9.4/1
:
struct X {
void g() const;
};
如果成员函数声明为
const
,则this
的类型为const X*
因此,您无法修改X
的成员。
答案 2 :(得分:2)
const Class * ...
这意味着func
会将const pointer
返回Class
Class c;
Class* p = c.func() // Not allowed.
const Class* p = c.func() // OK.
p->mem = 2; // Not allowed. p is a const pointer.
func() const;
^^^^
表示func
不会修改this
,换句话说也不会影响类的状态(不会修改任何成员变量。)。
void Class::func(int& i) const {
this->mem = i; // is not allowed here since func() is const (unless 'mem' is mutable)
i = this->mem; // This is OK.
}
答案 3 :(得分:0)
这意味着没有任何变化! const表示事物是不变的
即
const Class
- 无法获得乐趣
func() const;
该对象无法自行播放