理解C ++中的const

时间:2013-02-12 05:53:57

标签: c++ const

我们得到了一个语义和语法正确的方法,如下所示:

const Foo & bar( const Bim & bam ) const;

我们应该解释三个const调用中的每个调用的含义。我是C ++的新手,不知道他们的意思。我(大致)理解,最后的const意味着该方法只能在const变量上调用,并且不会传播变化。但是,我不明白其他两个。如果我在最后一个错了,请纠正我。

3 个答案:

答案 0 :(得分:4)

见以下解释

(1)const Foo & bar( (2)const Bim & bam ) (3)const;
  1. 该方法返回一个不可变的Foo类型的引用。
  2. 该方法不会修改Bim类型的方法参数。这意味着您可以将此方法传递给const和非const。无论哪种方式,该方法都不会修改对象,或者只能在该对象上调用const。
  3. 这意味着此方法不会以任何方式改变对象。
  4. PS:对于3,如果你是一个顽皮的男孩,有办法解决这个问题

答案 1 :(得分:0)

  

我(粗略地)理解最后的const意味着   方法只能在const变量上调用,并且不能承诺   传播变化。

一半。该函数可以在const或非const对象上调用,并且不承诺修改对象的状态(非可变成员)或调用任何非const成员函数。调用非const对象是可以的,但反之则不然。也就是说,如果不存在尾随const,那么它就可以在const对象上调用

答案 2 :(得分:0)

- >对于int func1()const;在函数末尾指定常量时,这意味着此函数是只读的,不能修改调用此函数的对象。 - >对于func(const bim);函数参数中的常量,如您所理解的那样,不允许更改该特定对象。 - >对于const func2();表示此函数的返回类型是常量。