我目前正在阅读Prata的C ++ primer Plus,并且遇到了关于* this指针的声明:
const Stock &topval(const Stock &s) const;
给予股票是一个类并且topval函数,
您如何阅读此声明?
我尝试使用顺时针/螺旋方法,但我对所有const感到困惑。 我相信理解如何阅读它将使我更好地理解它试图证明的概念。
谢谢!
答案 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 ++已经有一段时间了