当前位置: 首页 > news >正文

嵌入式培训机构四个月实训课程笔记(完整版)-C++和QT编程第三天-C++类和对象高级应用(物联技术666)

链接:https://pan.baidu.com/s/1YRXI0WiABUlYaQXQDNfbyA?pwd=1688
提取码:1688

上午:类和对象高级应用(续) 

下午:派生和继承

教学内容:

1友元

类的私有成员只能在类定义的范围内使用,也就是说私有成员只能通过它的成员函数来访问但是,有时候需要在类的外部访问类的私有成员。为此,就需要寻找一种途径,在不放弃私有数据安全性的情况下,使得类外部的函数或类能够访问类中的私有成员,此方法就是友元。

友元可分为:友元函数,友元成员,友元类

友元函数不是当前类的成员函数,而是独立于当前类的外部函数,但它可以访问该类的所有对象的成员,包括私有成员和公有成员。

例如:(友元函数)

       友元函数虽然可以访问类对象的私有成员,但它毕竟不是成员函数。因此,在类的外部定义友元函数时,不必像成员函数那样,在函数名前加上“类名::”

       友元函数一般带有一个该类的入口参数。因为友元函数不是类的成员,所以它不能直接引用对象成员的名称,也不能通过this指针引用对象的成员,它必须通过作为入口参数传递进来的对象名或对象指针来引用该对象的成员

//***********************************************

class Girl{

private:

       char *name;

       int age;

public:

       Girl(char *n,int d){    

             name = new char[strlen(n)+1];

             strcpy(name,n);

             age = d;

       }

       friend void disp(Girl &x);    //声明为友元函数,可以内部定义也可以外部定义

//    {    

//           cout<<"girl\'s name is:"<<x.name<<",age:"<<x.age<<endl;

//    }

       ~Girl(){

             delete name;

       }

};

void disp(Girl &x) //定义友元函数,格式不是void Girl:disp(Girl &x),所以是外部函数

{    

       cout<<"girl\'s name is:"<<x.name<<",age:"<<x.age<<endl;//可以访问私有成员

}

int main()

{    

       Girl e("Chen Xingwei",18);

       disp(e);                            //调用友元函数,函数是直接调用,是外部函数标志

       return 0;

}

//********************************************

友元函数可以访问多个类的私有成员

例如:

//********************************************

class Boy;                  //向前引用,必须声明,不声明下面的友元函数出错

class Girl{

private:

       char name[25];

       int age;

public:

       void init(char N[],int A);

       friend void prdata(const Girl plg,const Boy plb);   //声明函数为girl类的友元函数

};                                                       <

http://www.lryc.cn/news/281579.html

相关文章:

  • SAP中采购文档价格条件可以删除吗?
  • Baumer工业相机堡盟工业相机如何通过NEOAPI SDK设置硬件触发模式(C++)
  • 嵌入式培训机构四个月实训课程笔记(完整版)-Linux网络编程第二天-tcp编程练习(物联技术666)
  • 【IC前端虚拟项目】MVU子模块DS文档编写与注意事项
  • Postgresql 12.2 + PostGIS 3.0.1 安装部署
  • MAC iterm 显示git分支名
  • 智慧公厕:利用物联网、云计算和人工智能实现智能化管理与控制
  • 【漏洞复现】Apache Tomcat AJP文件包含漏洞(CVE-2020-1938)
  • [渗透测试学习] Hospital - HackTheBox
  • C技能树-学习笔记(1-2)C语言概述和数据类型
  • 设计模式入门
  • EasyExcel下载EXCEL文件,后台通过流形式输出到前端浏览器下载方式输出
  • Pandas实战100例 | 案例 56: 创建多重索引
  • 解决“nacos默认secret.key配置不当权限绕过漏洞“
  • 一款好用的开源思维导图软件 docker部署教程
  • Jenkins之pipeline
  • 创意交融:集成自定义报表和仪表盘设计器,实现图标替换
  • Mybatis 40_resultMap基础和@Results注解
  • 【蓝桥杯选拔赛真题31】C++数位求和 第十三届蓝桥杯青少年创意编程大赛C++编程选拔赛真题解析
  • 牛客网-css继承属性
  • OpenCV-19图像的仿射变换
  • 数据结构与算法教程,数据结构C语言版教程!(第四部分、字符串,数据结构中的串存储结构)二
  • 第七在线荣获百灵奖 Buylink Awards 2023零售圈年度卓越服务商品牌
  • 通过myBatis将sql语句返回的值自动包装成一个java对象(3)
  • 基于SSM的驾校信息管理系统设计与实现
  • 矩阵行列式的四大应用
  • 【小笔记】时序数据分类算法最新小结
  • 使用Python+pygame实现贪吃蛇小游戏
  • SpringBoot 全局异常统一处理:BindException(绑定异常)
  • ucloud轻量云(wordpress)配置ssl