友元(friend)--初学篇
友元:友好的元子,,,,呵呵呵 |
一般一个类中有私有(private),公有(public),和保护(protected)三种类型成员,而只有public成员才可以在类外被随便访问,protected只能在继承子类中访问。一般要访问私有成员要通过公有
函数提供的接口来访问,这符合面向对象的封装思想,但是有一种情况就例外,那就是-友元。
什么事友元;友元就是可以访问它友好类中的私有成员,包括友元类和友元函数,友元类又包括一般类和嵌套类,友元函数又包括,一般普通函数,和类的成员函数。一般在声明友元类时要先声明类。在使用对象的时候必须先声明,在特殊情况下,正式时声明类之前要使用类名,所以在声明友元类之前先声明类,然后再去实现类,这种情况下, 类的提前声明的使用范围是有限的。只有在正式声明一个类以后才能用它去定义类对象。声明友元是在类体中加关键字(friend)声明.在友元类中或者友元函数中就可以访问类中的私有成员了。
#include<iostream>
using namespace std;
class Date;
class Time
{
public:
Time(int h,int m,int s):hour(h),minute(m),second(s){
}
private:
int hour;
int minute;
int second;
public:
void display(Date &);
};
class Date
{
public:
Date(int,int ,int);
friend void Time::display(Date &);
private:
int mouth;
int day ;
int year;
};
void Time::display(Date &d)
{
cout<<d.mouth<<"/"<<d.day<<"/"<<d.year<<endl;
cout<<hour<<":"<<minute<<":"<<second<<endl;
}
Date::Date(int m,int d,int y):mouth(m),day(d),year(y)
{
}
int main(void)
{
Time t(10,50,04);
Date d(07,29,2014);
t.display(d);
return 0;
}
- sizeof不可以定义为标示符
- 全局变量可以和局部变量同名。
- 对于 char c[]="abcedfe"; sizeof(c);he strlen(c);的运算结果不同,sizeof要比strlen大一个单位,因为strlen() 函数忽略字符串最后的‘\0’ 结束符。
- 内存分为,栈区,堆区,自由存储区,全局/静态区,常量存储区。全局变量和静态变量分配的地址位于全局/静态区。一般普通变量,局部变量,形参都分配在栈区,动态分配的位于堆区(使用new关键字 或者使用malloc()分配的空间,)由const关键字修饰的变量位于常量区,这里面也包括char *c="asdjfksdjflksd"。
- 十进制化为十六进制,一般是先把十进制化为二进制,然后再把二进制化为十六进制,每四位二进制化为一位十六进制。
- 使用malloc()开辟的空间必须使用free()释放,不然会造成内存泄露。
最新文章
- iOS 设置UILabel的行间距并自适应高度
- WooCommerce
- fzuoj1111Radar Installation (贪心)
- Making my own Autonomous Robot in ROS / Gazebo, Day 1: Building the static model
- C#读取大文本文件
- 关于Maven的一些记录
- oracle sql别名
- 图解CSS的padding,margin,border属性
- 网站日志实时分析工具GoAccess使用
- Aptana Studio3开发Python和Ruby(最佳工具)
- 保护企业的Word文档
- lintcode 中等题:partition array 数组划分
- C++实现网格水印之调试笔记(一)
- mmc运输问题
- 九度OJ 1177 查找 (模拟)
- 使用bootstrap建立响应式网页——头部导航栏
- [爬虫]Scrapy 错误ordinal not in range(128)
- VS2017打开低版本的VS MVC架构的项目的时候需要修改的地方
- Qt错误 —— 无法启动此程序 因为计算机丢失QtCore5.dll 以及 无法定位程序输入点于动态链接库QtCore5.dll
- 启动Tomcat 卡在 Initializing Spring FrameworkServlet &#39;SpringMVC&#39;
热门文章
- [Hadoop源码解读](六)MapReduce篇之MapTask类
- 【转】IOS 怎么获取外设的广播数据AdvData
- POJ 3254 (状态压缩DP)
- [MarsZ]程序猿谈大学之大学应该学好哪些课程
- 【HTML】Beginner1:TagsAttributesElements
- linux驱动程序之电源管理之标准linux休眠与唤醒机制分析(一)
- Kafka系列(一)安装和配置说明
- poj 2367 Genealogical tree (拓扑排序)
- (二)如何在.net中使用Redis
- input输入框默认文字,点击消失