两种函数不能重载的情况

首先介绍构成函数重载的条件:函数的参数类型不同,参数个数不同才能构成函数的重载

情况一:  参数完全相同,只有返回值不同

示例 :

void print();

int print();

由于只有返回值不同故无法区分到底调用那个函数,因此不能重载

情况二:
语意不明确

示例:

KK(int x , int y = 10){

this->x = 10;

this->y = y;

}

KK(int x){

this->x = 10;

this->y = 10;

}

完整程序

#include <cstdio>
#include <iostream>

using namespace std;

typedef class KK{
public:
	KK(int x , int y = 10){
		this->x = 10;
		this->y = y;
	}
	KK(int x){
		this->x = 10;
		this->y = 10;
	}
	~KK(){

	}
	int x;
	int y;
	void print(){
		cout << x << endl << y << endl;
	}
}*LPPoint, Point;

int main(){
	LPPoint pt = (LPPoint)(new Point(3));

	pt->x = 5;
	pt->y = 5;

	pt->print();

	cout << sizeof(Point) << " " << sizeof(int) << endl;
	delete pt;

	return 0;
}

VS2013报错信息

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-25 20:45:56

两种函数不能重载的情况的相关文章

c++ operator操作符的两种用法:重载和隐式类型转换,string转其他基本数据类型的简洁实现string_cast

C++中的operator主要有两个作用,一是操作符的重载,一是自定义对象类型的隐式转换.对于操作符的重载,许多人都不陌生,但是估计不少人都不太熟悉operator的第二种用法,即自定义对象类型的隐式转换,我们下面就用以下这个小例子温故一下这两种用法: 1 #include <iostream> 2 #include <sstream> 3 using namespace std; 4 5 class FuncObj 6 { 7 public: 8 FuncObj(int n):

js中 var functionName = function() {} 和 function functionName() {} 两种函数声明的区别

js中有两种声明函数的方法,分别为: var functionOne = function() { // Some code }; function functionTwo() { // Some code } 为什么会有两种不同的方法?每个方法的优点和缺点分别是什么?有什么情况是一种方法能完成而另外一种方法不能完成的吗? 答: by @Greg 不同点在于functionOne只会在到达赋值的那一行才会被真正定义,而functionTwo会在 包含它的函数或script脚本 执行的时候马上被定

【OC学习-8】存取器方法?getter和setter?事实上就是赋值和返回值的两种函数

我们在声明类的时候,有实例变量+方法(函数),这些实例变量假设默认的话都是protected类型,一般无法直接訪问.更别提赋值和调用了,所以就产生了两种函数,getter函数就是可以返回实例变量的值,setter函数就是可以设置实例变量的值.(当然假设你把实例变量改成public的话可以直接调用,但不安全) 存取器方法(函数)就是:存--赋值setter函数.取--返回值getter函数. (1)先在类的.h文件中面声明这个函数(方法).一般都有默认的格式(例如以下):返回值函数的函数名字一般都

【OC学习-8】存取器方法?getter和setter?其实就是赋值和返回值的两种函数

我们在声明类的时候,有实例变量+方法(函数),这些实例变量如果默认的话都是protected类型,一般无法直接访问,更别提赋值和调用了,所以就产生了两种函数,getter函数就是能够返回实例变量的值,setter函数就是能够设置实例变量的值.(当然如果你把实例变量改成public的话可以直接调用,但不安全) 存取器方法(函数)就是:存--赋值setter函数,取--返回值getter函数. (1)先在类的.h文件里面声明这个函数(方法),一般都有默认的格式(如下):返回值函数的函数名字一般都和变

Vue里面提供的三大类钩子及两种函数

在路由跳转的时候,我们需要一些权限判断或者其他操作.这个时候就需要使用路由的钩子函数. 定义:路由钩子主要是给使用者在路由发生变化时进行一些特殊的处理而定义的函数. 总体来讲vue里面提供了三大类钩子,两种函数1.全局钩子2.某个路由的钩子3.组件内钩子 两种函数: 1.Vue.beforeEach(function(to,form,next){}) /*在跳转之前执行*/ 2.Vue.afterEach(function(to,form))/*在跳转之后判断*/ 全局钩子函数 顾名思义,它是对

matlab的两种函数简单使用介绍

画图 函数方法调用 可以在此处查看所有变量的值

C++ 成员函数 const 重载

众所周知,C++类实现函数重载有两种情况:函数参数的类型不同,参数的个数不同.而与函数的返回值没有什么关系.还有一种类成员函数重载,它并不要求函数的参数类型不同.下面给出例子: #include <iostream> using namespace std; class A { public: A(int a):_a(a){} void print()const//函数体中不能修改数据成员对象,否则报错 { cout <<"const " << _a

涨姿势题2_水题_两种解法

Problem Description 涨姿势题就是所谓的优化题,在组队赛中,队伍发现了一题水题,那么应该交给谁去处理?作为处理水题的代码手,应该具备什么样的素养?1,要快,水题拼的就是速度!2,不能卡水题!水题都卡,绝对不是一个代码手的风范!3,不能出错,错一次即罚时20分钟,对于水题来讲是致命的!4,要能看出来一题是水题!没有这条,上面三条都是没有意义的! 如果你希望你成团队中一个合格的代码手,那么这套题是你最好的选择,快AC吧! 本系列即是为了提高水题代码手的素养而准备的!水题经常需要用到

关于字符串转化为数字的深度优化两种算法

最近在做项目,在实际操作中发现自己在VC环境下写的字符串转化为整型的函数还是太过理想化了,或者说只能在window平台下软件环境中运行,重新给大家发两种函数方法: 第一个,就是理想化的函数,在VC环境下充分利用指针的优越性,对字符串转化为整型(同时也回答了某位网友的答案吖),实验检验通过: #include <stdio.h> #include <string.h> int rayatoi(char *str) { char *p=str; char sign=0; int num