C++中的函数重载

const对函数重载的影响

下面这篇讲的非常好!

参考:C++中const用于函数重载 - 青儿哥哥 - 博客园 (cnblogs.com)

C++Primer里的概念

C++中的函数重载

1.顶层const不影响传入函数的对象,不构成函数重载

void fun(int a)和

void fun(const int a);

实际上没有区别,因为函数调用的时候,存在形实结合的过程,所以不管有没有const都不会改变实参的值。

 

2.如果函数的形参是某种类型的指针或引用,通过区分指向的是常量对象还是非常量对象可以实现函数重载。构成函数重载

即区分 1)指针与指向常量的指针;2)引用与常量的引用 

 

3.常成员函数和非常成员函数之间的重载(const修饰成员函数时的重载)构成函数重载

声明:<类型标志符>函数名(参数表)const;

说明:

(1)const是函数类型的一部分,在实现部分也要带该关键字。

(2)const关键字可以用于对重载函数的区分。

(3)常成员函数不能更新类的成员变量,也不能调用该类中没有用const修饰的成员函数,只能调用常成员函数。

(4)非常量对象也可以调用常成员函数,但是如果有重载的非常成员函数则会调用非常成员函数。

 

重载看例子:

#include<iostream>  
using namespace std;  
   
class Test  
{  
protected:  
    int x;  
public:  
    Test (int i):x(i) { }  
    void fun() const  
    {  
        cout << "fun() const called " << endl;  
    }  
    void fun()  
    {  
        cout << "fun() called " << endl;  
    }  
};  
   
int main()  
{  
    Test t1 (10);  
    const Test t2 (20);  
    t1.fun();  
    t2.fun();  
    return 0;  
}  

结果为:

 C++中的函数重载

参考:const和非const函数重载 - stemon - 博客园 (cnblogs.com)

 

2023.1.30更新一些。

 

原文链接: https://www.cnblogs.com/littleheadache/p/17064808.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    C++中的函数重载

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/313523

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月16日 下午12:56
下一篇 2023年2月16日 下午12:56

相关推荐