这个C ++声明是什么意思?

时间:2011-09-14 19:48:16

标签: c++

我正在为一个类创建一个类图,该类在其头文件中有许多与此类似的定义。

  1       2                                        3             4       5
const std::pair<Controller<_Tp,_Val>*, _Val>& getHighestBidder(_Tp obj) const;

我知道他们中有几个人做了什么,

2) says that this method will return a std::pair<Controller<_Tp, _Val>*, _Val>
3) gives the name of the function
4) defines the type of object this function accepts as a parameter

但是,1和5是什么意思?

任何帮助/指针都会很棒。 感谢

5 个答案:

答案 0 :(得分:9)

首先请注意,它没有返回std::pair<Controller<_Tp, _Val>*, _Val>,它会向已存在的此类对象返回std::pair<Controller<_Tp, _Val>*, _Val> &,即引用

(1)表示它是对象的const引用;你不能通过这个引用来修改对象。

(5)表示这是一个const成员函数,即它不会修改它被调用的对象。

答案 1 :(得分:3)

这意味着完全一样,但我更喜欢把它写成:

  1                                      2       3              4          5
std::pair<Controller<_Tp,_Val>*, _Val> const& getHighestBidder(_Tp obj) const;


A member function
   5: const member function
   4: Taking a parameter of type _Tp by value
   3: With a function name getHighestBidder
Returning
   2: A const reference
   1: To a std::pair<>
      1a: first  member has type Controller<_Tp,_Val>*
      1b: second member has type _Val


5: Means calling this method will not change the state of the object
2: Means the returned object can not be altered via the reference returned
   This is probably because it is an alias of an internal member and if you
   could alter the object you would invalidate the const mention at (5).

答案 2 :(得分:1)

(1)表示返回的对象是const引用,只能调用它引用的对象的const方法。

(5)表示该方法是const:您可以使用const引用或指针调用它(并且它不能修改和成员)。

答案 3 :(得分:1)

  1. 表示返回类型是常量(即无法修改)
  2. 表示该方法不能修改它所属的类的任何成员变量
  3. 有关详细说明,请参阅:

    在函数返回值

    中使用'const'

    Messier Still - 面向对象编程

    在以下链接中:

    http://duramecho.com/ComputerInformation/WhyHowCppConst.html

答案 4 :(得分:1)

当你将“const”添加到变量/类声明中时,它会使编译器不可变,类似于objective-c中的“define”特性。它非常有用,因为它会产生错误,通常只会使编译器崩溃到编译器可以捕获的错误中(因为您试图更改常量的值)。

const int randomInteger = 5;
randomInteger = 3;

你知道,这会返回一个错误,这使得调试变得更容易。

“const”的良好网络资源在这里:

http://duramecho.com/ComputerInformation/WhyHowCppConst.html