const当做标记的函数重载,但是仅仅是限于类里面的成员函数
(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当做标记的函数重载,但是仅仅是限于类里面的成员函数的更多相关文章
- C++类的成员函数(在类外定义成员函数、inline成员函数)
		类的成员函数(简称类函数)是函数的一种,它的用法和作用和前面介绍过的函数基本上是一样的,它也有返回值和函数类型,它与一般函数的区别只是:它是属于一个类的成员,出现在类体中.它可以被指定为private ... 
- 类1(this指针/const成员函数/类作用域/外部成员函数/返回this对象的函数)
		假设我们要设计一个包含以下操作的 Sales_data 类: 1.一个 isbn 成员函数,用于返回对象的 book_no 成员变量 2.一个 combine 成员函数,用于将一个 Sales_dat ... 
- C++模板编程中只特化模板类的一个成员函数
		模板编程中如果要特化或偏特化(局部特化)一个类模板,需要特化该类模板的所有成员函数.类模板中大多数成员函数的功能可能是一模一样的,特化时我们可能只需要重新实现1.2个成员函数即可.在这种情况下,如果全 ... 
- C++模板编程中只特化模板类的一个成员函数(花样特化一个成员函数)
		转自:https://www.cnblogs.com/zhoug2020/p/6581477.html 模板编程中如果要特化或偏特化(局部特化)一个类模板,需要特化该类模板的所有成员函数.类模板中大多 ... 
- CDocument类的UpdateAllViews()成员函数
		(一)UpdateAllViews() 与 Invalidate()的区别 UpdateAllViews()是在DOC/VIEW结构中,当一个视图的数据改变后,通知所有视图作相应的改变,和重画毫无关系 ... 
- 友元(友元函数、友元类和友元成员函数) C++
		有些情况下,允许特定的非成员函数访问一个类的私有成员,同时仍阻止一般的访问,这是很方便做到的.例如被重载的操作符,如输入或输出操作符,经常需要访问类的私有数据成员. 友元(frend)机制允许一个类将 ... 
- C++友元(友元函数、友元类和友元成员函数)
		友元(友元函数.友元类和友元成员函数) C++ 有些情况下,允许特定的非成员函数访问一个类的私有成员,同时仍阻止一般的访问,这是很方便做到的.例如被重载的操作符,如输入或输出操作符,经常需要访问类的私 ... 
- 为什么通过空指针(NULL)能够正确调用类的部分成员函数
		#include <iostream> using namespace std; class B { public: void foo() { cout << "B ... 
- C++(十六) — 类中引用成员函数、命名空间的使用
		1.为什么类中引用成员函数? 类将属性和方法做了封装.类是一种数据类型,也就是:固定大小内存块的别名. 类的定义是一个抽象的概念,定义时不分配内存,当用类定义对象时,才分配一个固定大小的内存块. 此时 ... 
随机推荐
- vsphere使用笔记
			一,安装虚拟机,需要使用vsphere client上传镜像,提示错误: vsphere client 上传文件:Failed to log into NFC Server , 解决办法:用浏 ... 
- springboot  email  中常量值 配置   mailUtils
			列如:邮件配置: application-test.properties #################Email config start############################ ... 
- 前台框架vue.js中怎样嵌入 Echarts 组件?
			目前常用的图标插件有 charts, Echarts, highcharts.这次将介绍 Echarts 在 Vue 项目中的应用. 一.安装插件 使用 cnpm 安装 Echarts cnpm i ... 
- Maven打包跳过测试,文档生成
			运行mvn install时跳过Test 方法一: <project> [...] <build> <plugins> <plugin> <gro ... 
- 文字折行不折行 css
			white-space : 1. normal 默认值 ,文字自动换行. 2. pre 使用<pre>标签形式,表示元素. * ... 
- python帮助信息查看以及笔记
			如何获取使用帮助: 获取对象支持使用的属性和方法:dir() dir()不带参数时,返回当前范围内的变量.方法和定义的类型列表:带参数时,返回参数的属性.方法列表.如果参数包含方法__dir__(), ... 
- HttpSession的关键属性和方法
			1.当一个用户向服务器发送第一个请求时,服务器为其建立一个session,并为此session创建一个标识号:2.这个用户随后的所有请求都应包括这个标识号.服务器会校对这个标识号以判断请求属于哪个se ... 
- 机房servlet过滤器
			1.源代码 loginform.html <html> <head> <title>使用过滤器改变请求编码</title> <meta http- ... 
- 关于struts2输出excel表
			web.xml: <web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com ... 
- 启动tomcat时,一直卡在Deploying web application directory
			本来今天正常往服务器上扔一个tomcat 部署一个项目的, 最后再启动tomcat 的时候 发现项目一直都访问不了,看了一下日志: 1 2 3 4 5 6 7 [root@iz8vbdzx7y7owm ... 
