c++ *运算符重载
运算符重载,对象和指向对象的指针
直接上code
#include <iostream>
using namespace std;
class test
{
public:
int a;
test() : a(0){}
test &operator*(){
cout << "operator*" << endl;
cout << a << endl;
return *this;
}
};
int main()
{
test *t;
t = new test;
test t2 = *t;
t->a += 1;
// t2.a += 1;
*t = *t2;
*t; // 这一行 *t2; // **t; // 注意*t 和 **t这两个的差别
return 0;
}
运行结果:
t是指向test对象的指针,(*t) 也就是一个test对象。
所以只有 *t才真正的调用了 运算符的重载函数。
相关推荐
-
简介C++编程中的运算符重载
所谓重载,就是重新赋予新的含义.函数重载就是对一个已有的函数赋予新的含义,使之实现新功能,因此,一个函数名就可以用来代表不同功能的函数,也就是"一名多用". 运算符也可以重载.实际上,我们已经在不知不觉之中使用了运算符重载.例如,大 家都已习惯于用加法运算符"+"对整数.单精度数和双精度数进行加法运算,如5+8, 5.8 +3.67等,其实计算机对整数.单精度数和双精度数的加法操作过程是很不相同的, 但由于C++已经对运算符"+"进行了重载,所以
-
C++运算符重载规则详解
C++允许重载的运算符和不允许重载的运算符 C++中绝大部分的运算符允许重载,具体规定见表 不能重载的运算符只有5个: . (成员访问运算符) .* (成员指针访问运算符) :: (域运算符) sizeof (长度运算符) ?: (条件运算符) 前两个运算符不能重载是为了保证访问成员的功能不能被改变,域运算符和sizeof 运算符的运算对象是类型而不是变量或一般表达式,不具备重载的特征. C++运算符重载的规则 C++对运算符重载定义了如下几条规则. 1) C++不允许用户自己定义新的
-
C++运算符重载的方法详细解析
运算符重载实质上是函数的重载 重载运算符的函数一般格式如下: 函数类型 operator 运算符名称 (形参表列) {对运算符的重载处理} 例如,想将"+"用于Complex(复数)的加法运算,函数的原型可以是这样的: 复制代码 代码如下: Complex operator + (Complex & c1,Complex &c2); 其中,operator是关键字,时候专门用于定义重载运算符的函数的,运算符名称就是C++提供给用户的预定运算符. 注意:函数
-
c++运算符重载基础知识详解
实际上,很多C++运算符已经被重载.eg:将*运算符用于地址,将得到存储在这个地址中的值,将他用于2个数字时,得到的将是他们的乘积.C++根据操作数的数目和类型来决定采用哪种操作. C++允许将运算符重载扩展到用户定义的类型.例如,允许使用+将两个对象相加.编译器将根据操作数的数目和类型决定使用加法定义.运算符重载可以使代码看起来更自然.例如,将2个数组相加是一种常见的运算.通常,需要使用下面这样的for循环来实现: 复制代码 代码如下: for (int i = 0; i < 20; i++)
-
浅谈C++类型转化(运算符重载函数)和基本运算符重载(自增自减)
类型转化(运算符重载函数) 用转换构造函数可以将一个指定类型的数据转换为类的对象.但是不能反过来将一个类的对象转换为一个其他类型的数据(例如将一个Complex类对象转换成double类型数据).在C++提供类型转换函数(type conversion function)来解决这个问题.类型转换函数的作用是将一个类的对象转换成另一类型的数据. 类型转换函数的一般形式为: operator 类型名( ){ 实现转换的语句 } 下面是简单实现.这时候,Base起了两方面的作用:类和数据类型.系统会在
-
C++ 中重载和运算符重载加号实现矩阵相加实例代码
C++ 重载+运算符重载加号 实现矩阵相加 学习C++ 基础知识,这里实现简单的实例,记录下自己学习生活,很简单,大家一起看看吧! 实例代码: #include<iostream> #include<iomanip> using namespace std; class Complex { private: int i,j,n,a[2][3]; public: Complex(); Complex operator+(Complex &c); void display()
-
深入解析C++编程中的运算符重载
C++中预定义的运算符的操作对象只能是基本数据类型,实际上,对于很多用户自定义类型,也需要有类似的运算操作.例如: class complex { public: complex(double r=0.0,double I=0.0){real=r;imag=I;} void display(); private: double real; double imag; }; complex a(10,20),b(5,8); "a+b"运算如何实现?这时候我们需要自己编写程序来说明"
-
详解C++编程中的单目运算符重载与双目运算符重载
C++单目运算符重载 单目运算符只有一个操作数,如!a,-b,&c,*p,还有最常用的++i和--i等.重载单目运算符的方法与重载双目运算符的方法是类似的.但由于单目运算符只有一个操作数,因此运算符重载函数只有一个参数,如果运算符重载函数作为成员函数,则还可省略此参数. 下面以自增运算符"++"为例,介绍单目运算符的重载. [例] 有一个Time类,包含数据成员minute(分)和sec(秒),模拟秒表,每次走一秒,满60秒进一分钟,此时秒又从0开始算.要求输出分和秒的值. #
-
C++运算符重载 成员函数与友元函数详解
复制代码 代码如下: #include<iostream>using namespace std;class A{ int x,y; public: A(int xx,int yy):x(xx),y(yy){} A(){x=0;y=0;} A operator+(const A&b) //不加const限定,也可以 { return A(x+b.x,y+b.y); } A operator-() { return A(-x,-y); }
-
Python运算符重载详解及实例代码
Python运算符重载 Python语言提供了运算符重载功能,增强了语言的灵活性,这一点与C++有点类似又有些不同.鉴于它的特殊性,今天就来讨论一下Python运算符重载. Python语言本身提供了很多魔法方法,它的运算符重载就是通过重写这些Python内置魔法方法实现的.这些魔法方法都是以双下划线开头和结尾的,类似于__X__的形式,python通过这种特殊的命名方式来拦截操作符,以实现重载.当Python的内置操作运用于类对象时,Python会去搜索并调用对象中指定的方法完成操作. 类可以
-
Python运算符重载用法实例分析
本文实例讲述了Python运算符重载用法.分享给大家供大家参考.具体如下: 在Python语言中提供了类似于C++的运算符重在功能: 一下为Python运算符重在调用的方法如下: Method Overloads Call for __init__ 构造函数 X=Class() __del__ 析构函数 对象销毁 __add__ + X+Y,X+=Y __
-
Python运算符重载用法实例
本文实例讲述了Python运算符重载用法.分享给大家供大家参考.具体分析如下: python中,我们在定义类的时候,可以通过实现一些函数来实现重载运算符. 例子如下: # -*- coding:utf-8 -*- ''''' Created on 2013-3-21 @author: naughty ''' class Test(object): def __init__(self, value): self.value = value def __add__(self, x): return
-
c++ *运算符重载
运算符重载,对象和指向对象的指针 直接上code 复制代码 代码如下: #include <iostream> using namespace std; class test { public: int a; test() : a(0){} test &operator*(){ cout << "operator*" << endl; c
-
C#运算符重载用法实例分析
本文实例讲述了C#运算符重载用法.分享给大家供大家参考.具体分析如下: public class Plane { public virtual double TopSpeed() { return 300.0D;} public static bool operator>(Plane one, Plane two) { return one.TopSpeed() > two.TopSpeed(); } public static bool operator<(Plane one, Pla
随机推荐
- Docker探索namespace详解
- 使用PL/SQL Developer连接Oracle数据库的方法图解
- 关于sqlserver 2005 使用临时表的问题( Invalid object name #temptb)
- C语言对栈的实现基本操作
- JS导出PDF插件的方法(支持中文、图片使用路径)
- 《PHP编程最快明白》第四讲:日期、表单接收、session、cookie
- 关于C++中的static关键字的总结
- C语言编程时常犯十八个错误小结
- 安卓(Android)应用版本更新方法
- iframe的父子窗口之间的对象相互调用基本用法
- win7 64位系统JDK安装配置环境变量教程
- 使用jQuery判断Div是否在可视区域的方法 判断div是否可见
- jQuery实现文档树效果
- Java Mybatis框架入门基础教程
- java金钱处理方法实例详解
- PHP 5.0对象模型深度探索之绑定
- C++设计模式之命令模式
- 毕业论文-中小企业办公自动化系统的开发
- 微信小程序基于slider组件动态修改标签透明度的方法示例
- 对变量赋值的理解--Pyton中让两个值互换的实现方法