*是一个一元操作符,作用于指针,获取指针所指单元的内容。当某个类中对*操作符重载时,是将该类对象当做一个指针看待,用*操作符提取指针所指向的内容。

#include <iostream>
using namespace std;template<typename T> class DataContainer {T *p;
public:DataContainer(T* pp) {p=pp;}~DataContainer() {delete p;}template<typename T> friend T operator*(const DataContainer<T>&);
};template<typename T> T operator*(const DataContainer<T>& d) {return *(d.p);
};int main() {DataContainer<int> intData(new int(5));DataContainer<double> doubleData(new double(7.8));cout << *intData << endl;cout << *doubleData << endl;return 0;
}

程序输出结果:

5
7.8

阅读以上程序需要注意以下几个要点:
(1)*操作符重载既可以采用友元函数的形式,也可以是成员函数形式。如果是后者,应在类体中这样定义*操作符号函数。

T operator*()  {return *p;
}

如此定义,更加简洁。一般情况下,重载*操作符都是以成员函数的方式进行。

(2)一般来说,对*操作符进行重载的类都含有一个指针,*操作符通过类对象取数据,实际上就是从该指针所指的单元取数据。

(3)为了防止内存泄露,应该妥善处理 new 和 delete 运算。如果在对象的构造函数中使用了 new 申请空间,则应该在对象的析构函数中释放空间。反之,将指针所指空间的申请和释放的工作放到外部去处理。

C++ 解引用操作符重载相关推荐

  1. Kotlin 操作符重载详解

    本文主要内容 算术操作符重载 二元操作符重载 复合赋值操作符重载 一元操作符重载 比较操作符重载 集合相关的操作符重载 索引操作符重载 索引操作符重载Kotlin集合中的应用 in 操作符重载 区间操 ...

  2. C++:重载操作符 赋值操作符重载需要注意的问题

    一.操作符重载 1.什么是操作符重载 就是把一些操作符通过关键字operator,组装成一个函数,关键字operator后面接需要重载的操作符符号 2.为什么需要重载操作符? (1)简单.方便,比起封 ...

  3. 指针(*)、取地址()、解引用(*)与引用()

    指针(*).取地址(&).解引用(*)与引用(&) C++ 提供了两种指针运算符,一种是取地址运算符 &,一种是间接寻址运算符 *. 指针是一个包含了另一个变量地址的变量,您可 ...

  4. C语言(宏,内存,地址,指针,解引用)

    #include <stdio.h> #define NUM 100 int Add(int x,int y) {     int z = x + y;     return z; } 宏 ...

  5. 一、初级篇——指针(*)、取地址()、解引用(*)与引用()的区别

    1. 初步了解--指针与取地址 先看程序: #include<stdio.h>int main(void) {int num = 7;int *p = #//初始化指针,也可以写作int* ...

  6. c语言解引用运算符,C++ 解引用(*)和箭头(-)运算符的重载

    重载要求: 1.箭头运算符必须是类的成员函数.解引用运算符一般也应该声明为类的成员函数,但不是必须. 2.箭头用算符返回值必须是一个指针,或者是一个重载了箭头运算符的对象. a)如果返回的是一个指针将 ...

  7. 《C++详解》(二)初入C++最重要的知识点:引用 操作符

    目录 零,前言 一,引用的概念 二,引用的作用 1,引用做返回值 2,引用做参数 ​三,const常引用 四,引用的原理 五,引用与指针的区别 零,前言 在大学课程C++或者数据结构课本上很多同学发现 ...

  8. c++ operator百样操作符重载(详解)

    目录 一.operator== :等号判断重载 二.operator = : 等号赋值重载 三.operator != : 不等于重载 四.operator> : 大于号 或者 小于号 重载 五 ...

  9. C++函数指针解引用

    声明函数的引用: int f( double ); int (* const pf)(double) = f;       // pf是指向函数f()的常量指针 int (&rf)(doubl ...

最新文章

  1. redhat linux新建用户,linux redhat 添加用户
  2. 京东面试题:二叉树直径
  3. “AlphaGo之父”获最新一届ACM计算奖
  4. 【hdu1241Oil Deposits】【HDU 2612 Find a way】
  5. 机器学习笔记:Adam
  6. java finereport_java报表FineReport_JS整理
  7. macOS 跳过非 AppStore 下载的软件打开时的验证步骤
  8. Makefile 的 遗漏分隔符错误信息
  9. 一个软件工程师的职业规划
  10. Linux学习总结(66)——CentOS7操作系统SSH安全加固
  11. 超轻粘土机器人_超轻粘土 | 天近秋,背上行囊,捎上橡果,我们出发去远方
  12. 几何公差基础知识之圆度
  13. wox无法启动解决办法:
  14. html5 窗口 最小化,HTML5 窗口最小化动画(先压扁后变窄)
  15. Chamfer Distance--倒角距离
  16. 如何解决个人信息泄露问题
  17. react中关于解决antd里日历组件内部英文转换的问题
  18. 【转】走火大神说:去年这时候又辞退了一个老油条,不知道他现在是否在开公司了,可以对比一下混工资的水平...
  19. postgresql 备份 还原
  20. win10右键选中或双击docx、xlsx、ppt文件出现未响应情况

热门文章

  1. 这个严重漏洞可被滥用于破坏交通信号灯系统
  2. 《数学计算出题系统》功能规格说明书
  3. 免密登录-python
  4. 容器的主要目的是什么,Wise2C睿云智合的实战
  5. vs code 前端如何以服务器模式打开 [安装服务器] server insteall
  6. 设计模式系列 12-- 职责链模式
  7. GCD之后台程序运行
  8. java实现的判断括号是否成对的代码,()[]{}都可以
  9. java中sam接口_具有非SAM接口的lambda的Java习惯用法
  10. [Java] 蓝桥杯ALGO-111 算法训练 明明的随机数