c++重载的详细总结
1.操作符重载对大部分符号成立,一下几种不能重载:" . ", " .* ", " :: ", " ?: ", " sizeof "。
2.操作符重载分为 成员函数重载 和 全局函数重载,(“ = ”,“ ( ) ”,“ [ ] ”,” -> ”只能是操作符成员函数重载)
3.作为成员函数重载符,对于双目操作符重载函数只需一个形参,对于单目操作符重载函数不需要形参。
4.作为全局(友元)函数重载操作符。这要求操作符重载函数的形参至少有一个为类.结构.枚举或它们的引用类型。
如果操作符重载函数中需要访问形参类的私有成员,则需要把它说明成相应类的友元。
相关推荐
-
C++中的操作符重载详细解析
一.什么是操作符重载操作符重载可以分为两部分:"操作符"和"重载".说到重载想必都不陌生了吧,这是一种编译时多态,重载实际上可以分为函数重载和操作符重载.运算符重载和函数重载的不同之处在于操作符重载重载的一定是操作符.我们不妨先直观的看一下所谓的操作符重载: 复制代码 代码如下: #include <iostream> using namespace std; int main(){ int a = 2 , b = 3; float c =
-
解析C++中不能重载为友元函数的四个运算符
C++规定有四个运算符 =, ->, [], ()不可以是全局域中的重载(即不能重载为友员函数),这是为什么呢?现在先说说赋值运算符"="的重载C++规定赋值运算符"="只能重载为类的非静态成员函数,而不可以重载为类的友元函数.不能重载为类的静态成员应该比较容易理解,因为静态成员函数是属于整个类的,不是属于某个对象的,它只能去操作类静态数据成员.而赋值运算符"="是基于对象操作的.那么为什么赋值运算符不可以重载为类的友元函数?像同样都是双目
-
C++中复制构造函数和重载赋值操作符总结
前言 这篇文章将对C++中复制构造函数和重载赋值操作符进行总结,包括以下内容: 1.复制构造函数和重载赋值操作符的定义: 2.复制构造函数和重载赋值操作符的调用时机: 3.复制构造函数和重载赋值操作符的实现要点: 4.复制构造函数的一些细节. 复制构造函数和重载赋值操作符的定义 我们都知道,在C++中建立一个类,这个类中肯定会包括构造函数.析构函数.复制构造函数和重载赋值操作:即使在你没有明确定义的情况下,编译器也会给你生成这样的四个函数.例如以下类: 复制代码 代码如下: class CTes
-
C++重载运算符的规则详解
(1)C++不允许用户自己定义新的运算符,只能对已有的C++运算符进行重载.例如,有人觉得BASIC中用"* *"作为幂运算符很方便,也想在C++中将"* *"定义为幂运算符,用"3* *5"表示35,这是不行的. (2)C++允许重载的运算符C++中绝大部分运算符都是可以被重载的. 不能重载的运算符只有5个: . (成员访问运算符) .* (成员指针访问运算符) :: (域运
-
c++ *运算符重载
运算符重载,对象和指向对象的指针 直接上code 复制代码 代码如下: #include <iostream> using namespace std; class test { public: int a; test() : a(0){} test &operator*(){ cout << "operator*" << endl; c
-
C++输入输出操作符重载的深入分析
操作符的重载有一些规则: 1. 重载操作符必须具有一个类类型或枚举类型操作数.这条规则强制重载操作符不能重新定义用于内置类型对象的操作符的含义.如:int operator+(int, int), 不可以 2. 为类设计重载操作符的时候,必须选择是将操作符设置为类成员还是普通非成员函数.在某些情况下,程序没有选择,操作符必须是成员:在另外一些情况下,有些经验可以指导我们做出决定.下面是一些指导:a. 赋值(=),下标([]),调用(())和成员访问箭头(->)等操作符必须定义为成员,将这些
-
C++中重载、重写(覆盖)和隐藏的区别实例分析
本文实例讲述了C++中重载.重写(覆盖)和隐藏的区别,对于C++面向对象程序设计来说是非常重要的概念.具体分析如下: 1.重载:重载从overload翻译过来,是指同一可访问区内被声明的几个具有不同参数列(参数的类型,个数,顺序不同)的同名函数,根据参数列表确定调用哪个函数,重载不关心函数返回类型. 示例代码如下: class A{ public: void test(int i); void test(double i); void test(int i, double j); void te
-
C++之CNoTrackObject类和new delete操作符的重载实例
本文实例讲述了C++中CNoTrackObject类和new delete操作符的重载,分享给大家供大家参考.具体如下: 头信息: 复制代码 代码如下: class CNoTrackObject{ public: //在此出过错,没有加public 默认为类的私有变量,MyThreadData继承这个类后也无法访问成员变量 void* operator new(size_t nSize); void operator delete(void*); virtual
-
C++中不能被重载的运算符介绍
C/C++ 里大多数运算符都可以在 C++ 中被重载.C 的运算符中只有 . 和 ?:(以及 sizeof,技术上可以看作一个运算符)不可以被重载.C++ 增加了一些自己的运算符,除了 :: 和 .* 外,大多数都可以被重载.
-
C++函数重载的深入解析
我们在开瓶瓶罐罐的时候,经常会遭遇因各种瓶口规格不同而找不到合适的工具的尴尬.所以有时候就为了开个瓶,家里要备多种规格的开瓶器.同样是开个瓶子嘛,何必这么麻烦?于是有人发明了多功能开瓶器,不管啤酒瓶汽水瓶还是软木塞的红酒瓶都能轻松打开. 然而开瓶器的问题也会发生到程序设计中.比如我们要编写一个函数来求一个数的绝对值,然而整数.浮点型数.双精度型数都有绝对值,但为它们编写的函数返回值类型却是各不相同的.比如: 复制代码 代码如下: int iabs(int a);float fabs(float
随机推荐
- Sql Server 2005中查询用分隔符分割的内容中是否包含其中一个内容
- 手机移动端实现 jquery和HTML5 Canvas的幸运大奖盘特效
- java线程池:获取运行线程数并控制线程启动速度的方法
- JAVA过滤标签实现将html内容转换为文本的方法示例
- 举例讲解设计模式中的原型模式在iOS应用开发中的作用
- asp.net URL编码与解码
- 解读PHP中上传文件的处理问题
- Android提高之SurfaceView的基本用法实例分析
- C++回文数及素数问题计算方法
- Android实现返回拍摄的图片功能实例
- hadoop常见错误以及处理方法详解
- struts json 类型异常返回到js弹框问题解决办法
- SQL Server 高速缓存依赖分析
- javascript简化代码 A=alert w=document.writeln
- jQuery实现发送验证码并60秒倒计时功能
- 判断用户是否在线的代码
- VBS教程:方法-Delete 方法
- java中定义常量方法介绍
- php绘图之生成饼状图的方法
- 浅谈C++类型转化(运算符重载函数)和基本运算符重载(自增自减)