(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. CUDA C Programming Guide 在线教程学习笔记 Part 13

    ▶ 纹理内存访问补充(见纹理内存博客 http://www.cnblogs.com/cuancuancuanhao/p/7809713.html) ▶ 计算能力 ● 不同计算能力的硬件对计算特性的支持 ...

  2. hdu 4370 0 or 1,最短路

    题目描述 给定n * n矩阵C ij(1 <= i,j <= n),我们要找到0或1的n * n矩阵X ij(1 <= i,j <= n). 此外,X ij满足以下条件: 1. ...

  3. MySQL5.7.20 二进制包 在Linux系统中的 安装和配置

    01, 下载安装包 =>  https://dev.mysql.com/downloads/mysql/ 02, 上传到linux系统, 笔者这里安装在 root 目录下, 常见安装在 var/ ...

  4. 巧用JLINK来实现nrf51822的蓝牙设备流水号

    项目需求:在蓝牙广播的时候名字为 SN_设备流水号(如SN_00000001). 我们可以在原来的代码中进行一下修改和增加 ; 备注这个地址0X0001B160根据自己具体情况来设定 /**@brie ...

  5. as3 有趣现象 关于声明与变量

    当使用了一个变量,并且前后期都没有在有效域内对此声明,不管有没有赋值,都会报错. 但先使用了一个变量,后期在有效域内对此声明,那么此变量不报错,但在声明之前没有赋值,那么赋值默认值:如果使用变量时,赋 ...

  6. Java 8 日期时间API

    Java 8一个新增的重要特性就是引入了新的时间和日期API,它们被包含在java.time包中.借助新的时间和日期API可以以更简洁的方法处理时间和日期; 在介绍本篇文章内容之前,我们先来讨论Jav ...

  7. linux install redis-cli

    ubuntu: sudo apt-get install redis-cli centos: sudo -i yum list redis yum install redis>>> ...

  8. MySQL的事务处理及隔离级别

      事务是DBMS得执行单位.它由有限得数据库操作序列组成得.但不是任意得数据库操作序列都能成为事务.一般来说,事务是必须满足4个条件(ACID)       原子性(Autmic):事务在执行性,要 ...

  9. Life is in the little things --- Spreading wildly on Facebook

    这是在FaceBook上疯传的一组图 简笔画的图画的不算精细 但却狠狠地击中许多人的心灵   有时候生活中简单的一件小事, 恰恰是使得你的人生变得更有意义的一件大事! 别人总告诉你 人生是这样的 ▼ ...

  10. VirtualBox“切换到无缝模式”和“自动调整显示尺寸”菜单无法使用

    现象:VirtualBox“切换到无缝模式”和“自动调整显示尺寸”菜单无法使能,无法全窗口显示虚拟机桌面,菜单状态如下图所示: 原因:该功能的支持需要安装VirtualBox增强功能 方法:安装Vir ...