友元(friend)--初学篇

来源:互联网 发布:晓风网贷软件 编辑:程序博客网 时间:2024/04/29 20:43
友元:友好的元子,,,,呵呵呵


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

原创粉丝点击