vs2003 局部友元访问私有不可访问_C++ 类:重载运算符与友元

d8b468e89669ef28e11168ecafbfb721.png

18.类中重载运算符与友元

上次节中学习了如何在类中重新定义赋值(=)运算符,实际上在一个自定义类中除了赋值(=)运算符外,类的对象是不可以直接使用运算符的,比如你在main函数中写这样的代码会报错:

257d9e55c890f0e3e80ffc05c71aa7cd.png

如果想解决这些报错问题,需要在类中重载这些运算符。

18.1 重载

在表达式中使用

首先在类中声明要重载的运算符:< ,然后去函数中实现具体的比较规则。

4ef5ce14f4b22037028d7c25200544d2.png

声明重载运算符函数的代码要求按照固定的格式:必须在运算符

18.2 重载+运算符

如同上面的

9d8dbe75ea1fa788dfa452756d4ec62f.png

18.3 重载<>运算符

之前我们可以使用C++ 的流提取运算符 >> 和流插入运算符 << 来输入和输出内置的一些数据类型,实际上我们也可以重载流提取运算符和流插入运算符来操作自定义的数据类型。

在这里,有一点很重要,我们需要把运算符重载函数声明为类的友元函数,这样我们就能不用创建对象而直接调用函数了。

fa358dd5a92d79d8ae832144d3300dc9.png
5630efda492f6c392f55eb774c2ce269.png

重载运算符之后,在main函数中直接通过cout输出对象的数据,或cin输入对象的数据。

d536b83fd856a8092679970b80e8ab26.png

18.4 友元函数

类的private的成员只有类的成员函数才有权直接访问,外部函数无访问权限。但是类中有一种特殊的函数——友元函数,有权访问类的所有私有(private)成员和保护(protected)成员。尽管友元函数在类的定义中出现过,但友元函数并不是类的成员函数。

如果要声明一个函数为类的友元函数,需要在类定义中使用关键字 friend,函数的参数必须有一个类对象参数,因为只有通过对象才能访问私有或保护的成员:

3e36de0cd4f04af7d5fde6316ed8c7bc.png

18.5 友元类

友元也可以是一个类,该类被称为友元类。如果声明一个类为友元,那整个友元类的所有成员都是这个类的友元。

如果要声明友元类,需要在类定义中使用关键字 friend,如下所示:

124973a2b55d2e4052665e9e0b6fed56.png

友元类的任何成员函数都可以访问类的成员。

3cc4a4bbc02bb4055f73c9390fd157e4.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/news/454451.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle sqlldr (一) 最基本语法

-- Create table create table DEPT2 (DEPTNO NUMBER(2) not null,DNAME VARCHAR2(14),LOC VARCHAR2(1000) ); alter table DEPT2add constraint DEPT_PK primary key (DEPTNO);------demo.ctl LOAD DATA INFILE * --数据在控制文件中 INTO TABLE DEPT2 INSERT ---默认加…

Django REST framework 视图

上一部分代码在序列化部分 类继承顺序 ############### mixins.py ################ # 类中调用的方法均在 GenericAPIView 类中实现&#xff0c;所以下列类需要结合 GenericAPIView 使用 class ListModelMixin(object) # 查看继承类def list(self, reque…

AVS软件解码器的优化

AVS软件解码器的优化 董斌 , 姜昱明 (西安 电子科技大学计算机学院,陕西 西安,710071)) 摘 要: 主要研究了AVS标准的视频压缩部分,指出了影响解码速度的瓶颈并提出了一种优化方案.使用从程序结构入手结合使用SIMD指令集的方案来优化AVS软件解码器.实验结果表明优化方案可行并且…

IOS7.1.1真的像网上流传的那么好?没有任何问题么??

IOS7.1.1推送更新之后到处看到网上说711好的~~ 那么IOS7.1.1真的像网上现在流传的那么好么&#xff1f; 其实不然&#xff0c;IOS7.1.1目前众多网友反映说升级ios7.1.1之后APPstore连接不上了&#xff0c;提示无法连接到APPstore。 这个问题也不难解决~还是之前的老办法~ 那么今…

三校生计算机对口本科有哪些学校,宝山三校生五月对口高考报名

多次复习生活不可能像你想象得那么好&#xff0c;但也不会像你想象得那么糟。我觉得人的脆弱和坚强都超乎自己的想象。多种方式结合起来复习单一的复习方法&#xff0c;易产生消极情绪和疲劳&#xff0c;如果采用交谈复习法、讨论复习法、自我检查复习法多样化的复习方法&#…

localhost 已拒绝连接_【Python】MongoDB数据库的连接和操作

安装Python 要连接 MongoDB 需要 MongoDB 驱动。pip安装&#xff1a;python3 -m pip3 install pymongo创建数据库import pymongo myclient pymongo.MongoClient("mongodb://localhost:27017/")mydb myclient["loaderman"]注意: 在 MongoDB 中&#xff0c…

checkbox已设置为checked--true-但不勾选问题解决方法(只第一次勾选有效)

一、出现的问题及解决方法&#xff1a; 今天在写一个table相关插件的时候无意中发现了这样一个问题&#xff0c;记得以前在写这种控制checkbox选中与非选中的代码时并没有这种bug&#xff0c;当时也是用的checked属性&#xff0c;而现在却行不通了。 于是乎做了以下测试&#x…

Python 错误和异常小结[转]

原文链接 http://blog.csdn.net/sinchb/article/details/8392827 事先说明哦&#xff0c;这不是一篇关于Python异常的全面介绍的文章&#xff0c;这只是在学习Python异常后的一篇笔记式的记录和小结性质的文章。什么&#xff1f;你还不知道什么是异常&#xff0c;额... 1.Py…

Django REST framework 认证、权限和频率组件

认证与权限频率组件 身份验证是将传入请求与一组标识凭据&#xff08;例如请求来自的用户或其签名的令牌&#xff09;相关联的机制。然后 权限 和 限制 组件决定是否拒绝这个请求。 简单来说就是&#xff1a; 认证确定了你是谁权限确定你能不能访问某个接口限制确定你访问某…

高速率AVS整数变换的汇编实现与优化

1 引言 AVS标准Ⅲ采用的8x8整数变换在获得较H&#xff0e;264更高的压缩率和主观图像质量的同时&#xff0c;增加了算法的实现复杂性和时间开销。本文重点研究AVS编解码器的整数变换模块&#xff0c;针对不同的算法实现模式&#xff0c;在原有Visual C6&#xff0e;0整数变换模…

计算机与广播电视论文,浅谈广播电视中计算机技术的作用论文.pdf

1、计算机技术在广播电视的媒体内容中有重要应用在以往的广播电视中&#xff0c; 媒体内容主要分为音频和视频两种信号&#xff0c; 在传输的过程中使用的是模拟信号&#xff0c; 但模拟信号受到的外界干扰因素较为明显&#xff0c; 因此广播电视传播的媒体内容受到影响&#x…

opencv安装教程python3.7_Mac下安装使用Python-OpenCV,解决opencv3安装完成无法使用的问题 - pytorch中文网...

OpenCV是一个跨平台计算机视觉库&#xff0c;可以运行在Linux、Windows、Android和Mac OS操作系统上。提供了Python、Ruby、MATLAB等语言的接口&#xff0c;实现了图像处理和计算机视觉方面的很多通用算法。 Mac安装OpenCV 在我们的深度学习的过程中&#xff0c;对于图像&#…

NodeJS在CentOs7下安装

node下载地址:https://nodejs.org/en/download/ 1.安装gcc $ yum install gcc-c 2.解压最新版本 $ mkdir /usr/local/node$ tar zxvf node-v6.11.4.tar.gz $ cd node-v6.11.4$ ./configure --prefix/usr/local/node# 在当前目录下编译安装Node$ make$ make install 3.验证安装 …

Python功能之反射

有如下文件: index.py 1<span style"font-family:宋体, SimSun;">#!/usr/bin/env python<br data-filtered"filtered"># -*- coding:utf-8 -*-<br data-filtered"filtered">__author__ ryan<br data-filtered"filter…

Django REST framework 分页

分页模式 rest framework中提供了三种分页模式&#xff1a; from rest_framework.pagination import PageNumberPagination, LimitOffsetPagination, CursorPagination 全局配置 REST_FRAMEWORK {DEFAULT_PAGINATION_CLASS: rest_framework.pagination.LimitOffsetPaginat…

解析H.264视频编解码DSP实现与优化

引言 基于互联网的数字视频产业前景看好&#xff0c;而3G的规模部署&#xff0c;也会推动移动视频通信成为现实。但数字化后的视频图像具有数据海量性&#xff0c;给图像的存储和传输造成较大的困难。数字视频产业&#xff0c;是指数字内容中以数字视频形态为主的文化创意和传播…

ap计算机科学a买什么书,准备AP*计算机科学A考试-第1部分

你将学到什么Identify the use and proper use of Variables, Conditionals, Objects and primitives, control structures, booleans, lists and arrays, and Exceptions.Implement problem descriptions in well designed code.Identify and begin to design algorithms to s…

python 打包exe_python如何封装为exe

1、首先进入python安装路径D:\Python27\Scripts下&#xff0c;查看pip或easy_install是否安装。2、确保安装了pip或者easy_install&#xff0c;在cmd命令行下输入“easy_install”&#xff0c;没有提示“xxx不是内部或外部命令……”&#xff0c;就说明easy install工具安装成功…

CentOS7安装Hadoop2.7完整步骤

总体思路&#xff0c;准备主从服务器&#xff0c;配置主服务器可以无密码SSH登录从服务器&#xff0c;解压安装JDK&#xff0c;解压安装Hadoop&#xff0c;配置hdfs、mapreduce等主从关系。 1、环境&#xff0c;3台CentOS7&#xff0c;64位&#xff0c;Hadoop2.7需要64位Linux&…

Django REST framework 解析器和渲染器

解析器的作用 解析器的作用就是服务端接收客户端传过来的数据&#xff0c;把数据解析成自己可以处理的数据。本质就是对请求体中的数据进行解析。 在了解解析器之前&#xff0c;我们要先知道Accept以及ContentType请求头。 Accept是告诉对方我能解析什么样的数据&#xff0c…