(1)我们知道函数的重载时根据函数的参数类型以及函数参数个数来重载的,不能用函数返回值来重载函数。但是有时候函数参数个数和函数参数类型重载函数会和默认参数发生冲突:

int fun(int i,char c='a'){

}
int fun(int i){ } int main(){
int i
fun(i);//此时函数重载和函数默认参数就会出现问题,此时不知道具体调用的是哪一个函数
fun(i,'b');//这样调用就不会出现错误,此时明确知道调用的是哪一个函数
//出现上述重载函数时,int fun(int i)只要一调用就会出现错误 }

(2)在类的成员函数里面,const成员函数和非const成员函数可以出现重载,这是因为在成员函数中,const是用来修饰const成员函数的参数this指针的,故可以用来重载函数,但是这样用会不太好,如下代码

 /*
* Const_Overloda.h
*
*/
#ifndef CONST_OVERLOAD_H
#define CONST_OVERLOAD
class Const_Overload
{
int i;
public:
Const_Overload(int ii=);
~Const_Overload();
int f()const;
int f();
};
#endif
 /*
* Const_Overloda.cpp
*
*/ #include "Const_Overload.h"
#include<iostream> Const_Overload::Const_Overload(int ii) :i(ii)
{
} Const_Overload::~Const_Overload()
{
}
int Const_Overload::f()const{
std::cout << "f() const is running!" << std::endl;
return i;
} int Const_Overload::f(){ std::cout << i << std::endl;
return ;
}
 /*
* demo.cpp
*/ #include"Const_Overload.h"
#include<iostream>
using namespace std; int main(){
int i;
Const_Overload v();
v.f();//调用的是非const成员函数
const Const_Overload v1();
v1.f();//此时调用的是const成员函数
system("pause");
return ;
}

上述代码中,我们用const重载了f函数,其实这种重载时虽然不违反语法规定,但是这种重载时没有实际含义的,因为两个函数功能完全不同,用重载是不符合常规的,应该把他们写成两个不同的函数名,而不是用重载

const当做标记的函数重载,但是仅仅是限于类里面的成员函数的更多相关文章

  1. C++类的成员函数(在类外定义成员函数、inline成员函数)

    类的成员函数(简称类函数)是函数的一种,它的用法和作用和前面介绍过的函数基本上是一样的,它也有返回值和函数类型,它与一般函数的区别只是:它是属于一个类的成员,出现在类体中.它可以被指定为private ...

  2. 类1(this指针/const成员函数/类作用域/外部成员函数/返回this对象的函数)

    假设我们要设计一个包含以下操作的 Sales_data 类: 1.一个 isbn 成员函数,用于返回对象的 book_no 成员变量 2.一个 combine 成员函数,用于将一个 Sales_dat ...

  3. C++模板编程中只特化模板类的一个成员函数

    模板编程中如果要特化或偏特化(局部特化)一个类模板,需要特化该类模板的所有成员函数.类模板中大多数成员函数的功能可能是一模一样的,特化时我们可能只需要重新实现1.2个成员函数即可.在这种情况下,如果全 ...

  4. C++模板编程中只特化模板类的一个成员函数(花样特化一个成员函数)

    转自:https://www.cnblogs.com/zhoug2020/p/6581477.html 模板编程中如果要特化或偏特化(局部特化)一个类模板,需要特化该类模板的所有成员函数.类模板中大多 ...

  5. CDocument类的UpdateAllViews()成员函数

    (一)UpdateAllViews() 与 Invalidate()的区别 UpdateAllViews()是在DOC/VIEW结构中,当一个视图的数据改变后,通知所有视图作相应的改变,和重画毫无关系 ...

  6. 友元(友元函数、友元类和友元成员函数) C++

    有些情况下,允许特定的非成员函数访问一个类的私有成员,同时仍阻止一般的访问,这是很方便做到的.例如被重载的操作符,如输入或输出操作符,经常需要访问类的私有数据成员. 友元(frend)机制允许一个类将 ...

  7. C++友元(友元函数、友元类和友元成员函数)

    友元(友元函数.友元类和友元成员函数) C++ 有些情况下,允许特定的非成员函数访问一个类的私有成员,同时仍阻止一般的访问,这是很方便做到的.例如被重载的操作符,如输入或输出操作符,经常需要访问类的私 ...

  8. 为什么通过空指针(NULL)能够正确调用类的部分成员函数

    #include <iostream> using namespace std; class B { public: void foo() { cout << "B ...

  9. C++(十六) — 类中引用成员函数、命名空间的使用

    1.为什么类中引用成员函数? 类将属性和方法做了封装.类是一种数据类型,也就是:固定大小内存块的别名. 类的定义是一个抽象的概念,定义时不分配内存,当用类定义对象时,才分配一个固定大小的内存块. 此时 ...

随机推荐

  1. spring 注解 @NotBlank and BingResult

    @NotEmpty用在集合类上面 @NotBlank 用在String上面 @NotNull 用在基本类型上 在 user对象中需要

  2. gevent 实现io自动切换,gevent.join([]), gevent.spawn, 爬虫多并发的实现

    gevent 是一个第三方库,可以很容易的实现遇到io(文件传输)操作时,程序自动跳转到下一个程序 例一: 用gevent.sleep()  来模拟io操作 import gevent def foo ...

  3. locate包的安装

    linux中locate命令可以快速定位我们需要查找的文件,但是在yum中,locate的安装包名为 mlocate(yum list | grep locate可以查看),安装方法: yum -y ...

  4. PPT汇报 评审表

    评审表 团队编号 团队名称 团队项目名称 格式评审 内容评审 PPT评审 演讲评审 优点 存在问题(至少提3点) 建议 01 牛肉面不要牛肉不要面 02 正义联盟 我是一个图书小平台 03 什么队 & ...

  5. JSP复习

    3.2.2 JSP指令元素: JSP指令 (1) page指令:定义整个页面的全局属性 (2)include指令:用于包含一个文件或代码的文件 (3)taglib指令:用来引用自定义的标签或第三方标签 ...

  6. 疯狂java——第一章 java语言概述与开发环境

    J2ME: 主要用于控制移动设备和信息家电等有限存储的设备. J2SE: 整个java技术的核心和基础,它是J2ME和J2EE编程的基础. J2EE: Java技术中应用最广泛的部分,J2EE提供了企 ...

  7. org.Hs.eg.db包简介(转换NCBI、ensemble等数据库中基因ID,symbol等之间的转换)

    1)安装载入 ------------------------------------------- if("org.Hs.eg.db" %in% rownames(install ...

  8. pip批量更新安装的包

    ------------------pip批量更新库-------------------- 1)查看过期的库 pip list --outdated  更新单一的库: pip install --u ...

  9. gtftools软件简单介绍(我自己不建议用,因为我发现不好用)

    1)背景 生物信息学研究经常涉及计算或提取基因的各种特征,如基因ID作图,GC含量计算和不同类型的基因长度,通过操纵基因模型,这些模型通常以GTF格式注释,可从ENSEMBL或GENCODE数据库获得 ...

  10. SpringMVC中ApplicationContext中的配置文件的问题(No bean named 'sessionFactory' is defined 已解决)

    在一个SpringMVC项目中, 连着两天不管怎么搞都是一直在报错, 报的最多的就是一个 Servlet.service() for servlet [springDispatcherServlet] ...