如何阅读此C ++语句

时间:2015-12-04 14:57:43

标签: c++ c++11

我目前正在阅读Prata的C ++ primer Plus,并且遇到了关于* this指针的声明:

const Stock &topval(const Stock &s) const;

给予股票是一个类并且topval函数,

您如何阅读此声明?

我尝试使用顺时针/螺旋方法,但我对所有const感到困惑。 我相信理解如何阅读它将使我更好地理解它试图证明的概念。

谢谢!

6 个答案:

答案 0 :(得分:13)

             topval(              )        // topval is a member function...
                                    const; // In which *this is const...
                    const Stock &s         // Taking in a reference
                                           //     to a const Stock...
const Stock &                              // And returning a reference
                                           //     to a const Stock.

答案 1 :(得分:4)

这是一个函数,它接受并返回对const Stock的引用(不一定是同一个,要清楚),并且当它这样做时不会改变this

答案 2 :(得分:1)

最后的const应用于this指针。参数中的const应用于参数,并将句子第一部分中的const应用于返回值。

简化语法解释

Return value - function name - ( argument list ) - const modifier. 

const说明符是一个函数修饰符,指定传递给此函数的指针是const,因此除了在类定义中声明为可变的成员变量外,您不能修改成员变量。

精心设计的语法是:

noptr-declarator ( parameter-list ) cv(optional) ref(optional) except(optional) attr(optional) -> trailing require

因此,您声明了一个方法

在收到对const对象的Stock引用作为输入后,返回对const的{​​{1}}引用,Stock指针是一个const指针要调用此方法。

没有这么用但是等效且有争议的正确方法来写这个

this

现在允许发现实际应用cv限定符的位置(即限定词的左侧)

答案 3 :(得分:1)

它声明了一个成员函数(因为最后const):

  • 命名为topval

  • 请勿更改班级的任何其他成员,请参阅上一篇const

  • 仅使用一个参数:const Stock& s

  • 返回类型const Stock&

  • 的值

答案 4 :(得分:1)

如果人们明智地写下这段代码,那就容易多了:

const Stock& topval(const Stock& s) const;

topval是一个const函数,其中const Stock&名为s,并返回const Stock&

简单!

答案 5 :(得分:-3)

const Stock &topval( const Stock &s) const;

所以你要声明一个函数topval,它返回一个类型为Stock的对象的内存地址为const。函数topval将Stock对象的内存地址作为参数。由于这是const,因此您将无法在topval中更改此对象。

最后const结尾意味着,这个函数(topval)将无法更改类Stock的任何成员..

我认为这或多或少是这个意思,没有c ++已经有一段时间了