《C++程序设计教程》笔记之友元

live long nad prosper

《C++程序设计教程》笔记之友元

在c++语言中,定义一个类后,成员函数可以访问类中的public属性。
在下面例子中,创建了一个含有sittingroom和livingroom的属性.

#include<iostream>
#include<cstring>

using namespace std;

class B{
public:
    string sittingroom;//客厅是公共属性

private:
    string livingroom;//卧室是私有属性
public:
    B(){
        sittingroom="01";
        livingroom="02";
    }
};

void quanju(B *b){//全局函数 
        cout << "-----" << b->sittingroom << endl;//访问公共属性
}

void test(){//测试函数,初始化一个实例类,并调用全局函数
    B b;
    quanju(&b);
}

int main()
{
    test();
    return 0;
}

代码执行结果为:

-----01

如果尝试在quanju函数中访问私有属性:

cout << "-----" << b->livingroom << endl;

IDE会直接报错
为了能让全局函数访问私有属性,需要使用友元,让函数访问私有属性。

#include<iostream>
#include<cstring>

using namespace std;

class B{
    friend void quanju(B *b);//友元
public:
    string sittingroom;

private:
    string livingroom;
public:
    B(){
        sittingroom="01";
        livingroom="02";
    }
};

void quanju(B *b){
        cout << "-----" << b->sittingroom << endl;
        cout << "-----" << b->livingroom << endl;//访问私有属性
}

void test(){
    B b;
    quanju(&b);
}

int main()
{
    test();
    return 0;
}

友元的格式是在友元函数前加上friend。
全局函数quanju()就可以访问私有私有属性,结果为:

-----01
-----02
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值