如题, 考虑一个成员函数要加const的话, 如果这个成员函数在类内定义, 当然一个const就解决问题. 但是如果希望类内声明类外定义的话, 这个const是应该加在声明处还是定义处, 或者是两个地方都要加?
另外同样的问题对于inline, c++ primer上说inline在声明处和定义出同样有效, 但是最好加在定义出, const是否也是这样呢?
如题, 考虑一个成员函数要加const的话, 如果这个成员函数在类内定义, 当然一个const就解决问题. 但是如果希望类内声明类外定义的话, 这个const是应该加在声明处还是定义处, 或者是两个地方都要加?
另外同样的问题对于inline, c++ primer上说inline在声明处和定义出同样有效, 但是最好加在定义出, const是否也是这样呢?
3 回答1.3k 阅读✓ 已解决
1 回答1k 阅读✓ 已解决
4 回答801 阅读
1 回答877 阅读
1 回答905 阅读
1 回答676 阅读
1 回答783 阅读
定义和声明分开的时候,定义需要匹配到声明。
而const修饰符是影响到函数匹配。
也就是说
int a() const
和int a()
是两个成员函数。你类外定义的时候要么都加,要么都不加,当然也可以把两个都声明上去,在调用的时候会根据调用者身份的不同而选择是否调用const版本。
iniline不影响函数匹配,它指定的是函数是否内联展开。