c++重载的详细总结
1.操作符重载对大部分符号成立,一下几种不能重载:" . ", " .* ", " :: ", " ?: ", " sizeof "。
2.操作符重载分为 成员函数重载 和 全局函数重载,(“ = ”,“ ( ) ”,“ [ ] ”,” -> ”只能是操作符成员函数重载)
3.作为成员函数重载符,对于双目操作符重载函数只需一个形参,对于单目操作符重载函数不需要形参。
4.作为全局(友元)函数重载操作符。这要求操作符重载函数的形参至少有一个为类.结构.枚举或它们的引用类型。
如果操作符重载函数中需要访问形参类的私有成员,则需要把它说明成相应类的友元。
相关推荐
-
C++重载运算符的规则详解
(1)C++不允许用户自己定义新的运算符,只能对已有的C++运算符进行重载.例如,有人觉得BASIC中用"* *"作为幂运算符很方便,也想在C++中将"* *"定义为幂运算符,用"3* *5"表示35,这是不行的. (2)C++允许重载的运算符C++中绝大部分运算符都是可以被重载的. 不能重载的运算符只有5个: . (成员访问运算符) .* (成员指针访问运算符) :: (域运
-
C++中的操作符重载详细解析
一.什么是操作符重载操作符重载可以分为两部分:"操作符"和"重载".说到重载想必都不陌生了吧,这是一种编译时多态,重载实际上可以分为函数重载和操作符重载.运算符重载和函数重载的不同之处在于操作符重载重载的一定是操作符.我们不妨先直观的看一下所谓的操作符重载: 复制代码 代码如下: #include <iostream> using namespace std; int main(){ int a = 2 , b = 3; float c =
-
C++中复制构造函数和重载赋值操作符总结
前言 这篇文章将对C++中复制构造函数和重载赋值操作符进行总结,包括以下内容: 1.复制构造函数和重载赋值操作符的定义: 2.复制构造函数和重载赋值操作符的调用时机: 3.复制构造函数和重载赋值操作符的实现要点: 4.复制构造函数的一些细节. 复制构造函数和重载赋值操作符的定义 我们都知道,在C++中建立一个类,这个类中肯定会包括构造函数.析构函数.复制构造函数和重载赋值操作:即使在你没有明确定义的情况下,编译器也会给你生成这样的四个函数.例如以下类: 复制代码 代码如下: class CTes
-
C++中不能被重载的运算符介绍
C/C++ 里大多数运算符都可以在 C++ 中被重载.C 的运算符中只有 . 和 ?:(以及 sizeof,技术上可以看作一个运算符)不可以被重载.C++ 增加了一些自己的运算符,除了 :: 和 .* 外,大多数都可以被重载.
-
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++ *运算符重载
运算符重载,对象和指向对象的指针 直接上code 复制代码 代码如下: #include <iostream> using namespace std; class test { public: int a; test() : a(0){} test &operator*(){ cout << "operator*" << endl; c
-
解析C++中不能重载为友元函数的四个运算符
C++规定有四个运算符 =, ->, [], ()不可以是全局域中的重载(即不能重载为友员函数),这是为什么呢?现在先说说赋值运算符"="的重载C++规定赋值运算符"="只能重载为类的非静态成员函数,而不可以重载为类的友元函数.不能重载为类的静态成员应该比较容易理解,因为静态成员函数是属于整个类的,不是属于某个对象的,它只能去操作类静态数据成员.而赋值运算符"="是基于对象操作的.那么为什么赋值运算符不可以重载为类的友元函数?像同样都是双目
-
C++输入输出操作符重载的深入分析
操作符的重载有一些规则: 1. 重载操作符必须具有一个类类型或枚举类型操作数.这条规则强制重载操作符不能重新定义用于内置类型对象的操作符的含义.如:int operator+(int, int), 不可以 2. 为类设计重载操作符的时候,必须选择是将操作符设置为类成员还是普通非成员函数.在某些情况下,程序没有选择,操作符必须是成员:在另外一些情况下,有些经验可以指导我们做出决定.下面是一些指导:a. 赋值(=),下标([]),调用(())和成员访问箭头(->)等操作符必须定义为成员,将这些
-
C++函数重载的深入解析
我们在开瓶瓶罐罐的时候,经常会遭遇因各种瓶口规格不同而找不到合适的工具的尴尬.所以有时候就为了开个瓶,家里要备多种规格的开瓶器.同样是开个瓶子嘛,何必这么麻烦?于是有人发明了多功能开瓶器,不管啤酒瓶汽水瓶还是软木塞的红酒瓶都能轻松打开. 然而开瓶器的问题也会发生到程序设计中.比如我们要编写一个函数来求一个数的绝对值,然而整数.浮点型数.双精度型数都有绝对值,但为它们编写的函数返回值类型却是各不相同的.比如: 复制代码 代码如下: int iabs(int a);float fabs(float
-
C++之CNoTrackObject类和new delete操作符的重载实例
本文实例讲述了C++中CNoTrackObject类和new delete操作符的重载,分享给大家供大家参考.具体如下: 头信息: 复制代码 代码如下: class CNoTrackObject{ public: //在此出过错,没有加public 默认为类的私有变量,MyThreadData继承这个类后也无法访问成员变量 void* operator new(size_t nSize); void operator delete(void*); virtual
随机推荐
- Git 教程之工作区、暂存区和版本库详解
- 关于SQL Server中bit类型字段增删查改的一些事
- javascript 混合的构造函数和原型方式,动态原型方式
- Canvas 绘制粒子动画背景
- 原生JavaScript实现异步多文件上传
- Windows平台实现PHP连接SQL Server2008的方法
- C++中的异常处理机制详解
- iOS如何让tableview支持不同种类的cell详解
- Asp.Net程序目录下文件夹或文件操作导致Session失效的解决方案
- JS实现线性表的顺序表示方法示例【经典数据结构】
- Android中实现自动生成布局View的初始化代码方法
- php实现的支持断点续传的文件下载类
- JS实现窗口加载时模拟鼠标移动的方法
- 如何调试JScript/VBScript的方法
- javaWeb项目部署到阿里云服务器步骤详解
- 用rsync对网站进行镜像备份步骤
- 简单分析Python中用fork()函数生成的子进程
- 基于C++实现的线程休眠代码
- java 在Jetty9中使用HttpSessionListener和Filter
- Android中Listview下拉刷新和上拉加载更多的多种实现方案