首页 > 编程语言 >c++ 友元类 友元类方法

c++ 友元类 友元类方法

时间:2022-08-21 17:23:10浏览次数:99  
标签:AirConditioner int c++ Tv c1 方法 class 友元类

一、友元类

#pragma once
#include"Tv.h"
class Remote
{
public:
void chanDown(Tv& tv);
};
#pragma once
class Tv
{
public:
friend class Remote;
void chandown();
Tv(int maxChannel=10);
private:

int channel;
int maxChan;
};
Remote作为Tv的友元类,就需要告知在Tv类的声明中告知Tv,我的朋友Remote能访问我的所有成员方法、变量, 所以要在Tv类里这样声明:friend class Remote; 二:友元方法
class AirConditioner;
class AirRemote {
public:
void set_c(AirConditioner& ac, int c);
};
class AirConditioner {
private:
int c;
friend void AirRemote::set_c(AirConditioner& ac, int c1);
public:
AirConditioner(int c1 = 26);
};
有时后我们只想把私有变量暴露给某个类的某个方法能访问,比如 只让(AirConditioner)空调遥控器的设置温度的方法(set_c) 能访问 空调(AirConditioner)的私有变量 c, 就要向上面这样声明。 先前向声明:AirConditioner,然后声明AirRemote最后在声明AirConditioner。这个顺序是不能变的。
#include"FriendClassMethod.h"
#include<iostream>

AirConditioner::AirConditioner(int c1) {
this->c = c1;
}
void AirRemote::set_c(AirConditioner& ac, int c1) {
ac.c = c1;
std::cout << "空调设置为: " << ac.c << "摄氏度\n";
}
三.互为友元 如果两个类某些方法互相都要访问对方成员,这个时候,可以声明为友元函数,不是某个它们之间的某个类的成员函数,就普通的友元函数就可以了。参数记得上带上这两个类的引用就可以了。或者互相声明为对方的友元类。

标签:AirConditioner,int,c++,Tv,c1,方法,class,友元类
From: https://www.cnblogs.com/HelloQLQ/p/16610367.html

相关文章

  • crossover在mac安装KeyGen.exe注册机的方法
    Mac上一些应用的正常使用,如果想要运行windows的exe程序,可以借助crossover软件,今天为您带来crossover在mac安装KeyGen.exe注册机的方法。crossover在mac安装KeyGen.exe注册......
  • curl: (52) Empty reply from server解决方法
    https://www.itbiancheng.com/article/5030.html 今天朋友说服务器上面定时发布的文章,没有正常的发出去由此想到了是不是定时任务出了问题,手动执行的时候提示curl:(5......
  • PHP正则的Unknown Modifier错误解决方法
    https://www.jb51.net/article/22304.htm 如下正则:$a='2<span><nobr>tóng<spanclass="h">dòng</span></nobr><br>垌</span>3';echopreg_replace('/<spanclas......
  • C++指针
    两种声明方式int*p=newint;*p=1000;inta=1000;int*p=&a;数组名和指针的区别指针的值可以修改,数组名是常量。pointerName=pointerName+1;//v......
  • C++之vector
     一、标准库函数1.构造数组——参考博客一维数组构造://构造一维数组vector<int>vec(n);//n为vec长度,默认所有值为0vector<int>vec(n,1);......
  • JAVA对象与JSON转换的各种方法-fastjson
    1<!--https://mvnrepository.com/artifact/com.alibaba/fastjson-->2<dependency>3<groupId>com.alibaba</groupId>4<artifactId>fastjson</artifactId>......
  • 牛客网笔试输入输出处理方法总结(基于Python3.5)
    牛客网判题系统输入处理牛客网上的输入输出借鉴ACM模式给出,对于习惯了leetcode函数定义形式解题的小伙伴们来说确实比较生疏。为了避免在之后的笔试中再次吃亏,在这里对牛......
  • 【Java】环境配置以及快速切换环境的技巧和方法
    前言前几天想用burp抓包来着,发现burp突然不能用了,重装了burp发现还是不能用,意识到是java环境出了问题。在之前有段时间没玩CTF,去搞开发了,于是java环境糊里......
  • 纯真IP数据库转mysql方法详解
    纯真ip数据库转mysql_如何把纯真ip数据库导入到MySQL数据表中纯真中国IP地理位置  https://www.cz88.net一、下载最新版的QQWry.Dat二、下载IPLook使用IPLook把QQWry......
  • X86汇编层面的方法调用。
    本文主要描述了X64下的汇编层面的方法调用。具体来说就是一个C语言的方法被另外一个方法调用,是如果在汇编语言X64的规范中实现的。1.假设有如下C语言文件"test.c"点击......