友元:友好的元子,,,,呵呵呵



一般一个类中有私有(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()释放,不然会造成内存泄露。

最新文章

  1. iOS 设置UILabel的行间距并自适应高度
  2. WooCommerce
  3. fzuoj1111Radar Installation (贪心)
  4. Making my own Autonomous Robot in ROS / Gazebo, Day 1: Building the static model
  5. C#读取大文本文件
  6. 关于Maven的一些记录
  7. oracle sql别名
  8. 图解CSS的padding,margin,border属性
  9. 网站日志实时分析工具GoAccess使用
  10. Aptana Studio3开发Python和Ruby(最佳工具)
  11. 保护企业的Word文档
  12. lintcode 中等题:partition array 数组划分
  13. C++实现网格水印之调试笔记(一)
  14. mmc运输问题
  15. 九度OJ 1177 查找 (模拟)
  16. 使用bootstrap建立响应式网页——头部导航栏
  17. [爬虫]Scrapy 错误ordinal not in range(128)
  18. VS2017打开低版本的VS MVC架构的项目的时候需要修改的地方
  19. Qt错误 —— 无法启动此程序 因为计算机丢失QtCore5.dll 以及 无法定位程序输入点于动态链接库QtCore5.dll
  20. 启动Tomcat 卡在 Initializing Spring FrameworkServlet &#39;SpringMVC&#39;

热门文章

  1. [Hadoop源码解读](六)MapReduce篇之MapTask类
  2. 【转】IOS 怎么获取外设的广播数据AdvData
  3. POJ 3254 (状态压缩DP)
  4. [MarsZ]程序猿谈大学之大学应该学好哪些课程
  5. 【HTML】Beginner1:TagsAttributesElements
  6. linux驱动程序之电源管理之标准linux休眠与唤醒机制分析(一)
  7. Kafka系列(一)安装和配置说明
  8. poj 2367 Genealogical tree (拓扑排序)
  9. (二)如何在.net中使用Redis
  10. input输入框默认文字,点击消失