首页 > 编程语言 >【C++面向对象】重载

【C++面向对象】重载

时间:2024-08-10 17:24:26浏览次数:8  
标签:node 函数 int C++ 运算符 面向对象 参数 重载

重载简述

重载是C++面向对象编程领域的重要概念。C++ 允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载运算符重载

对于重载函数而言,有一个基本原则:重载的函数两两之间的参数列表互不相同。参数列表不同是指参数的数量不同,或者参数的类型不同,但C++并不接受参数数量相同且参数类型对应相同(即使参数名称不同)或者仅返回值类型不同的函数重载。

当调用重载的函数或运算符时,编译器将会一一比对参数列表,找到符合要求的函数。这个过程叫做重载决策

函数重载

函数重载的基本方法是,定义两个或两个以上具有相同名称、参数列表符合函数重载要求的函数。以下是一个实例:

int add(int a, int b)
{
	return a + b;
}

double add(double a, double b)
{
	return a + b;
}

请注意:下面的代码

int add(int a, int b)
{
	return a + b;
}

double add(int a, int b)
{
	return (double)(a + b);
}

是不能通过编译的,报错:

无法重载仅按返回类型区分的函数

即使将第二个add函数中的ab换成cd,也会出现同样的报错。

运算符重载

如果想要根据不同的功能重载运算符,需要使用operator关键字。以下是一个实例,展现了对于类实现的对+的重载:

class node
{
private:
	int num;
	int weight;
public:
	node operator+(const node&);
};

node node::operator+(const node& b)
{
	node n;
	n.num = this->num + b.num;
	n.weight = this->weight + b.weight;
	return n;
}

请注意:在某些编译器中(例如VS 2019),不允许原本的运算符可以对重载的运算符的参数进行操作。例如在对+进行重载时,不允许参数是intdouble等等诸如此类的基本类型。

不可重载的运算符

以下是不可重载的运算符:

  • .成员访问运算符
  • .*->*成员指针访问运算符
  • ::域名解析运算符
  • sizeof字长运算符
  • ?:条件运算符
  • #预处理符号

标签:node,函数,int,C++,运算符,面向对象,参数,重载
From: https://blog.csdn.net/LiuJack_2011/article/details/141093316

相关文章

  • 扩展【从0制作自己的ros导航小车】C++_ROS_QT5联合编译,简单界面为ROS开发增添交互
    从0制作自己的ros导航小车前言一、环境搭建二、联合编译三、测试前言前面已经实现了导航功能,对于之后的一些开发,有交互能力是比较重要的,比如小车上连接一块屏幕,通过屏幕来选择模式,可视化等等。QT是不错的选择,但是需要做一些额外的工作,让QT与ROS能够建立联系,实现通信......
  • 集合相似度c++
    初入新蒟蒻一多多关照。弱弱问一句,有没有东营区一中的学哥学姐                               集合相似度题目是这样的——题目描述给定两个整数集合,它们的相似度定义为:Nc/Nt×100%。其中Nc是两个集合......
  • C++基础入门
    一·命名空间(namespace)正常namespace的使用include<stdio.h>#include<stdlib.h>//1.正常的命名空间定义//wzh是命名空间的名字,⼀般开发中是⽤项⽬名字做命名空间名。namespacebit{//命名空间中可以定义变量/函数/类型intrand=10;intAdd(in......
  • 1.动手编写第一个makefile编译c++多文件项目
    1.动手编写第一个makefile编译c++多文件项目1.1ubuntu开发环境安装•apt-getupdate#更新安装源•apt-getinstallg++#安装gcc和c++的开发库•apt-getinstallgdb#调试工具•apt-getinstallmake•apt-getinstallopenssh-server#远程连接工具•apt-getin......
  • 2024年华为OD机试真题-推荐多样性-C++-OD统一考试(C卷D卷)
    2024年OD统一考试(D卷)完整题库:华为OD机试2024年最新题库(Python、JAVA、C++合集) 题目描述:推荐多样性需要从多个列表中选择元素,一次性要返回N屏数据(窗口数量),每屏展示K个元素(窗口大小),选择策略:1.各个列表元素需要做穿插处理,即先从第一个列表中为每屏选择一个元素,再从第二个列......
  • c++习题18-计算鞍点
    目录一,题目二,思路三,代码一,题目给定一个5×5的矩阵,每行只有一个最大值,每列只有一个最小值,寻找这个矩阵的鞍点。鞍点指的是矩阵中的一个元素,它是所在行的最大值,并且是所在列的最小值。例如:在下面的例子中(第4行第1列的元素就是鞍点,值为8)。11356912478101056......
  • c++习题20-百钱百鸡
    目录一,题目二,思路三,代码 一,题目农夫约翰今天来到了畜牧市场,想给自己的农场里买点鸡回去。已知公鸡一只5块钱,母鸡3块钱,小鸡崽子一块钱三只。农夫手里有N元,他想买N只鸡,但是他跟ljc一样数学不好,想让你帮他算一算有几种买法,以方便他挑选。输入描述一个整数N,约翰手里的钱......
  • C++ 类型转换
    目录0.前言1.C语言类型转换1.1隐式类型转换1.2显式类型转换2.C++强制类型转换2.1static_cast2.2reinterpret_cast2.3const_cast2.4dynamic_cast3.为什么C++需要4种强制类型转换3.1类型转换的多样性需求3.2提高类型转换的安全性3.3提供更明确的语义3.4支持高......
  • C++标准库函数
    很多人用C++就是因为C++有很多方便的函数,所以我来科普一下方便的输入输出函数:scanf(); 高效的输入(TLE的可以和printf一起用,很快!)格式:输入变量a:scanf(...,&a);一定要加&(取地址)...是按a的类型来定的:%d:int%lld:longlong%lf:double%c:charprintf(); ......
  • 面向对象编程(OOP: Object Oriented Programming ):类、对象、构造方法、封装
    目录一、类1、定义(1)属性(2)方法2、类的定义方法二、对象1、定义2、对象的定义方法三、类和对象的关系1、现实世界都是由很多对象组成的,基于对象的共同特征抽象出类。2、对象:真实存在的对象3、类是对象的模板,对象是类的具体实例。4、一个类可以创建多个对象,同一个......