当前位置:首页 > 实用技巧 >

友元函数怎么转换成员(友元函数怎么调用成员函数)

来源:原点资讯(www.yd166.com)时间:2024-01-10 04:30:49作者:YD166手机阅读>>

什么是友元

C 面向对象的特点是数据封装和数据隐藏。然而,某些类外部函数可能要使用类内部成员变量,这就需要将成员变量设置为public,但是会导致数据隐藏功能失效。

也可以考虑在类的内部开放成员变量get方法,但是这样操作比较麻烦。

所以,给类外部的指定函数设置特权,可以访问类内部的私有成员变量,这样的特权函数就叫做友元。

友元函数怎么转换成员,友元函数怎么调用成员函数(1)

友元函数怎么转换成员,友元函数怎么调用成员函数(2)

运算符重载

运算符重载就是给运算符赋予一些新的功能。比如,<<既是位移运算符,又可以配合 cout 向控制台输出数据。C 对<<运算符进行重载操作。

重载虚数加法

友元函数怎么转换成员,友元函数怎么调用成员函数(3)

将友元函数转换为成员函数

友元函数怎么转换成员,友元函数怎么调用成员函数(4)

重载虚数减法

Complex operator-(const Complex& x) const { return Complex(m_i - x.m_i, m_j - x.m_j); }

如果成员函数内部不需要更改成员变量的值,可以声明为常函数。

重载单目运算符-

Complex operator-() const { return Complex(-m_i, -m_j); }

假设友元函数重载传递两个参数A和B,结果是A op B。

如果是成员函数,A就是成员变量,参数是“B”。

如果是单目运算符,op A,没有”B”,所以没有参数。

重载前置

友元函数怎么转换成员,友元函数怎么调用成员函数(5)

返回当前对象引用,即本身,减少中间对象生成。

重载后置

友元函数怎么转换成员,友元函数怎么调用成员函数(6)

int为固定语法格式。

重载==和!=

bool operator==(const Complex& x) const { return (m_i == x.m_i) && (m_j == x.m_j); } bool operator!=(const Complex& x) const { return (m_i != x.m_i) || (m_j != x.m_j); }重载 =

Complex& operator =(const Complex& x) { m_i = x.m_i; m_j = x.m_j; return *this; }重载<<和>>

class Complex { friend ostream& operator<<(ostream&, const Complex&); friend istream& operator>>(istream&, const Complex&); }; ostream& operator<<(ostream& cout, const Complex& x) { printf("(%d, %d)", x.m_i, x.m_j); return cout; } istream& operator>>(istream& cin, const Complex& x) { scanf("%d%d", &x.m_i, &x.m_j); return cin; },

栏目热文

友元函数可以调用静态成员吗(友元函数访问私有成员)

友元函数可以调用静态成员吗(友元函数访问私有成员)

C 是一门非常强大和灵活的面向对象编程语言,它提供了类和对象的概念,让程序员可以根据不同的场景设计和实现自定义的数据类...

2024-01-10 04:34:12查看全文 >>

友元函数模板图(函数模板友元函数)

友元函数模板图(函数模板友元函数)

在C 中,可以使用模板来创建泛型代码,以处理不同类型的数据。友元声明是一种特殊的声明,它允许在类定义中访问私有成员。当...

2024-01-10 05:18:51查看全文 >>

友元函数放在哪里(怎么理解友元函数)

友元函数放在哪里(怎么理解友元函数)

什么是友元C 规定私有成员只能在类的成员函数内部访问,如果想在别处访问对象的私有成员,只能通过类提供的接口(成员函数)...

2024-01-10 05:03:53查看全文 >>

友元类所有函数(友元模板函数有几种)

友元类所有函数(友元模板函数有几种)

C 使用类对数据进行隐藏和封装,类的数据成员一般定义为私有成员,而将提供类与外界通讯接口的成员函数定义为公有的。C ...

2024-01-10 04:59:58查看全文 >>

清明上河图保存在哪个地方(清明上河图保存在哪些地方)

清明上河图保存在哪个地方(清明上河图保存在哪些地方)

明代画家仇英仿造的《清明上河图》被卖出了9位数的天价,一件后世仿品居然能卖的这么贵,那么真品的价格肯定会更高。北宋绘画师...

2024-01-10 05:11:47查看全文 >>

友元函数能访问成员吗(友元函数访问私有成员)

友元函数能访问成员吗(友元函数访问私有成员)

友元函数我们知道在c 中类具有封装、继承、多态、数据私有化的特性,一般的类外函数无法直接对类的数据进行操作,如果想让类...

2024-01-10 05:12:19查看全文 >>

消毒水味太重怎么去除

消毒水味太重怎么去除

图文|自来水博士请您点击右上方“关注”,获取更多水的知识。欢迎留言、点赞、收藏、关注。自来水博士,研究自来水至今14年。...

2024-01-10 05:10:58查看全文 >>

如何快速清除消毒水味道(怎样消除消毒水味道)

如何快速清除消毒水味道(怎样消除消毒水味道)

面对来势汹汹的疫情,消毒防护措施不再是短暂性的事情,而是一场“持久战”。但是消毒水味道不但刺鼻,对身体也有一定的害处,以...

2024-01-10 05:02:11查看全文 >>

怎么快速去除消毒水味道(怎么去除水里的消毒水的味道)

怎么快速去除消毒水味道(怎么去除水里的消毒水的味道)

每个早晨醒来,刷牙用的漱口水总是能闻到浓浓的消毒水气味。其实这是一个很正常的现象。自来水中的消毒水味来自于余氯。因为自来...

2024-01-10 04:46:16查看全文 >>

用什么方法把消毒水的味道去掉(怎么快速去消毒水味)

用什么方法把消毒水的味道去掉(怎么快速去消毒水味)

消毒液作用多着呢,学会正确方法,家里干净无异味嗨喽大家好,大家平时有购买消毒液的习惯么,可能在前些年的时候,大家每到活动...

2024-01-10 04:57:47查看全文 >>

文档排行