C/C++:C++友元类
C++友元类:
正常情况下,一个类是訪问不到还有一个类的私有成员的。
就像以下这个:
#include <iostream>
class A{
private:
int a;
public:
A(){
a = 1;
}
};
class B:public A{
public:
B(){
std::cout << a << std::endl;
}
};
int main()
{
B p;
p();
return 0;
}
这是就会报错:main.cpp|6|error: 'int A::a' is private| 也就是说a是私有的,B訪问不到。
而这时,我们就要用到友员类的概念了。
<span style="font-size:18px;">
#include <iostream>
class A{
friend class B;//指定B为A的友元类。
private:
int a;
public:
A(){
a = 1;
}
};
class B:public A{
public:
B(){
std::cout << a << std::endl;
}
};
int main()
{
B p;
return 0;
}
</span>
这时。B就能訪问A的私有成员了。
即使B没有继承至A,也是能訪问的。
就像这样:
<span style="font-size:18px;">
#include <iostream>
class A{
friend class B;//指定B为A的友元类。
private:
int a;
public:
A(){
a = 1;
}
};
class B{
public:
B(){
A a;
std::cout << a.a << std::endl;
}
};
int main()
{
B p;
return 0;
}
</span>
然而实际上。在开发过程中。程序猿是非常少使用到友元类的,由于它使两个类直接的关系太过紧密。
PS:初学C++,有什么不正确的地方。一定要告诉我呀_(:з」∠)_。我好纠正学习,也不会误引导人们。
。
版权声明:本文博主原创文章。博客,未经同意不得转载。
C/C++:C++友元类的更多相关文章
- C++的友元类和友元函数实例
#include <math.h> #include<iostream> using namespace std; class Point { public: Point(do ...
- 不可或缺 Windows Native (20) - C++: 友元函数, 友元类
[源码下载] 不可或缺 Windows Native (20) - C++: 友元函数, 友元类 作者:webabcd 介绍不可或缺 Windows Native 之 C++ 友元函数 友元类 示例演 ...
- C++学习12 友元函数和友元类
友元函数和友元类在实际开发中较少使用,想快速学习C++的读者可以跳过本节. 一个类中可以有 public.protected.private 三种属性的成员,通过对象可以访问 public 成员,只有 ...
- YTU 2619: B 友元类-计算两点间距离
2619: B 友元类-计算两点间距离 时间限制: 1 Sec 内存限制: 128 MB 提交: 469 解决: 252 题目描述 类Distance定义为类Point的友元类来实现计算两点之间距 ...
- C++:友元(非成员友元函数、成员友元函数、友元类)
3.8 友元:友元函数和友元类 友元函数 :既可以是不属于任何类的非成员函数,也可以是另一个类的成员函数,统称为友元函数.友元函数不是当前类的成员函数,而是独立于类的外部函数,但它可以访问该类所有的 ...
- c++ 友元类
一.友元类相关概念 要将私有成员数据或函数暴露给另一个类,必须将后者声明为友元类. 注意三点: (1)友元关系不能传递 (2)友元关系不能继承 (3)友元关系不能互通
- C++学习之友元类和友元函数
C++学习之友元类和友元函数 模板类声明也可以有友元,模板的友元可以分为以下几类: 1.非模板友元: 2.约束模板友元,即就是友元的类型取决于类被实例化的时候的 ...
- C++ 习题 输出日期时间--友元类
Description 设计一个日期类和时间类,编写display函数用于显示日期和时间.要求:将Time类声明为Date类的友元类,通过Time类中的display函数引用Date类对象的私有数据, ...
- 友元(友元函数、友元类和友元成员函数) C++
有些情况下,允许特定的非成员函数访问一个类的私有成员,同时仍阻止一般的访问,这是很方便做到的.例如被重载的操作符,如输入或输出操作符,经常需要访问类的私有数据成员. 友元(frend)机制允许一个类将 ...
随机推荐
- hdu1428之dfs+spfa
漫步校园 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- android关于实现滑动界面
首先要说的是,滑动界面,我们需要一个以上的view切换,实际上可以使用ArrayList<View> pageViews要保存view信息,然后切换 LayoutInflater infl ...
- openjpa框架入门_Demo概览(一)
我个人所了解并学习的openjpa日志(一) 最近一直研究openjpa,想把自己所了解的写成日志,和大家一起学习,一起进步. 整个过程,会有一个完整的经过改造过openbook demo可运行. O ...
- 在Windows下使用Hexo+GithubPage搭建博客的过程
1.安装Node.js 下载地址:传送门 去 node.js 官网下载相应版本,进行安装即可. 可以通过node -v的命令来测试NodeJS是否安装成功 2.安装Git 下载地址:传送门 去 Git ...
- WPF自定义圆形按钮样式资源文件
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" x ...
- CSDN开源夏令营 百度数据可视化实践 ECharts(8)问题分析
ECharts问题描写叙述: 问题就是折线图上的点是显示的,有人问能不能一開始不显示,当你点击的时候或者是当鼠标移动到上面的时候,折线上的点才显示? 例如以下图所看到的: 分析:让折线上的点不显示能够 ...
- PHP实现快速排序算法
快速排序(Quick Sort)是对冒泡排序的一种改进,属不稳定排序算法,由东尼·霍尔在1962年提出.快速排序基本步骤:从数列中挑出一个元素(一般称为称为“基准”),通过一趟排序将要排序的数据分割成 ...
- Oracle基本流程语句
====1.IF语句==========
- mysql-定时调用存储过程
mysql定时调用存储过程,对表数据集表结构进行备份 存储过程实例: BEGIN DECLARE tname varchar(64); set @tname = CONCAT('RENAME TABL ...
- UVA 707 - Robbery(内存搜索)
UVA 707 - Robbery 题目链接 题意:在一个w * h的图上.t个时刻,然后知道一些信息,每一个时刻没有小偷的矩阵位置,问哪些时刻能够唯一确定小偷位置.和确定小偷是否已经逃走,假设没逃走 ...