const或volatile修饰参数类型时,函数重载的辨析。

来源:互联网 发布:淘宝网毛衣外套女 编辑:程序博客网 时间:2024/04/28 07:45

void fun(int a);

void fun(const int a);

不构成重载。

当一个参数类型是const或volatile时,在识别函数声明是否相同时,并不考虑const或volatile修饰符。(C++ Primer 3rd p371)

void fun(int *a);

void fun(const int *a);

构成重载,因为参数是不同的类型,前者指向整型的指针,后者是指向常整型的指针,是不同类型的指针。

 

void fun(int *a);

void fun(int *const a);

不构成重载,两者均是指向整型的指针,只是后者用const修饰了指针,所以不构成重载。