首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >参考文献与参考文献的区别

参考文献与参考文献的区别
EN

Stack Overflow用户
提问于 2020-05-20 14:19:39
回答 2查看 1.2K关注 0票数 0
代码语言:javascript
运行
复制
void setage(const int&a);
void setage(int&a);

这两种功能有什么区别?什么时候调用这个函数?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-20 14:32:36

考虑到重载集:

代码语言:javascript
运行
复制
void setage(int&a) { std::cout << "&"; }
void setage(const int&a) { std::cout << "&c"; }

第一个函数只使用非const变量调用:

代码语言:javascript
运行
复制
int a = 42;
setage(a);  // prints &

如果将一个变量传递给const,或者传递给它一个文字值,则调用第二个函数:

代码语言:javascript
运行
复制
int const b = 42;
setage(b);  // prints c&
setage(42);  // prints c&

请注意,如果此重载集是在类中编写的,则应用相同的规则,调用哪个函数仍然取决于传入的参数是文字变量、非const变量还是const变量。

票数 5
EN

Stack Overflow用户

发布于 2020-05-20 14:32:11

const只是意味着该函数不会更改该值。当通过引用传递时,通常倾向于通过常量引用传递,除非函数应该更改参数。

至于调用哪个函数,则取决于变量类型。见下面的例子。

代码语言:javascript
运行
复制
int a( const int &b ) { return b; }
int a( int &b ) { return ++b; }

int main() {
    int x = 2;
    a( x ); // calls a( int & b )
    a( 5 ); // calls a( const int &b )
    const int y = 7;
    a( y ); // calls a( const int &b )
}

注意,文字值(如上面示例中的5 )不能绑定到非const引用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61915474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档