五天速成C++-----第三天

文章介绍了C++中的友元和运算符重载的概念及应用。友元函数和友元类允许类的外部函数访问私有和保护成员,提高效率。运算符重载则是为自定义类型提供与基本类型相似的运算符行为,包括加法、自增等,增强了代码的可读性和效率。文章提供了多个示例来解释如何通过成员函数和友元函数来重载这些运算符。
摘要由CSDN通过智能技术生成

友元和运算符重载

类实现了数据的隐藏与封装,类的数据成员一般定义为私有成员,仅能通过类的成员函数才能读写。如果数据成员定义为公共的,则又破坏了封装性。但是某些情况下,需要频繁读写类的数据成员,特别是在对某些成员函数多次调用时,由于参数传递、类型检查和安全性检查等都需要时间开销,而影响程序的运行效率。

友元主要是用于运算符重载

1.友元函数(掌握)

定义:定义在类外部的普通函数,需要在类中用friend关键字进行说明。就可以访问类中所有的成员

注意事项

  1. 函数参数是对象引用。
  2. 不是类内函数,不受类内权限修饰符限制。友元函数的声明可以写在类的任意位置
#include <iostream>
using namespace std;
class Person{
private:
    string phoneNum;
    string ID;
public:
    Person(string phoneNum,string ID){
        this->phoneNum=phoneNum;
        this->ID=ID;
    }
    friend void test(Person& p);//声明了Test是Person类的友元函数
};
void test(Person& p){
    cout<<"身份证号:"<<p.ID<<" 电话号码:"<<p.phoneNum<<endl;
}
int main()
{
    Person p1("180XX888","3729XXX2020");
    test(p1);

}

2.友元类

当类B是类A的友元类时,类B就可以访问类A中所有的成员

#include <iostream>
using namespace std;
class A{
private:
    int value;
public:
    A(int v):value(v){}
    friend class B;
};
class B{
public:
    void test(A& t){
        cout<<t.value<<endl;
    }
};
int main()
{
    A aa(100);
    B bb;
    bb.test(aa);
}

友元关系的特点:

1.友元关系是单向的  a把b当朋友  b没有把a当朋友

2.友元关系不可传递  a和b是朋友  b和c是朋友   a和c不是朋友

3. 友元关系不可继承  

3.运算符重载(掌握)

定义:在C++中,运算符的操作对象只能是基本数据类型。自定义类型是不能直接使用,所有

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

别睡了.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值