我正在为一个类创建一个类图,该类在其头文件中有许多与此类似的定义。
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是什么意思?
任何帮助/指针都会很棒。 感谢
答案 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)
有关详细说明,请参阅:
在函数返回值
中使用'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