带有 const 参数和重载的函数

Functions with const arguments and Overloading(带有 const 参数和重载的函数)
本文介绍了带有 const 参数和重载的函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

正在试用 stackeroverflow qn 所以它让我思考为什么不重载该函数,我想出了一个稍微不同的代码,但它说该函数不能被重载.我的问题是为什么?或者有其他方法吗?

Was tryin out the stackeroverflow qn so it got me thinking why not overload the the function and I came up with a slightly different code but it says the function cannot be overloaded. My question is why? or is there a another way?

 #include <iostream>
 using std::cout;

 class Test {
         public:
         Test(){ }
         int foo (const int) const;
         int foo (int );
 };

 int main ()
 {
         Test obj;
         Test const obj1;
         int variable=0;
     do{
         obj.foo(3);        // Call the const function 
          obj.foo(variable); // Want to make it call the non const function 
         variable++;
             usleep (2000000);
        }while(1);
 }

 int Test::foo(int a)
 {
    cout<<"NON CONST"<<std::endl;
    a++;
    return a;
 }

 int Test::foo (const int a) const
 {
    cout<<"CONST"<<std::endl;
    return a;
 }

推荐答案

不能仅基于非指针、非引用类型的常量性进行重载.

You can't overload based only on the constness of a non pointer, non reference type.

想想如果你是编译器.面对线:

Think for instance if you were the compiler. Faced with the line:

 cout <<obj.foo(3);

你会调用哪个函数?

当您按值传递时,值会以任何方式复制.参数上的 const 仅与函数定义相关.

As you are passing by value the value gets copied either way. The const on the argument is only relevant to the function definition.

这篇关于带有 const 参数和重载的函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Bring window to front -gt; raise(),show(),activateWindow() don’t work(把窗户放在前面 -raise(),show(),activateWindow() 不起作用)
How to get a list video capture devices NAMES (web cameras) using Qt (crossplatform)? (C++)(如何使用 Qt(跨平台)获取列表视频捕获设备名称(网络摄像机)?(C++))
How to compile Qt as static(如何将 Qt 编译为静态)
C++ over Qt : Controlling transparency of Labels and Buttons(C++ over Qt:控制标签和按钮的透明度)
How to know when a new USB storage device is connected in Qt?(Qt如何知道新的USB存储设备何时连接?)
What is an event loop in Qt?(Qt 中的事件循环是什么?)