常量类和功能

时间:2013-05-05 22:10:04

标签: c++ const

我需要写一个新方法。提供以下代码:

const Class * func() const;

但是当类和函数都声明为常量时它意味着什么呢?

4 个答案:

答案 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;该对象无法自行播放