友元:友好的元子,,,,呵呵呵 |
一般一个类中有私有(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() 函数忽略字符串最后的‘ ’ 结束符。
- 内存分为,栈区,堆区,自由存储区,全局/静态区,常量存储区。全局变量和静态变量分配的地址位于全局/静态区。一般普通变量,局部变量,形参都分配在栈区,动态分配的位于堆区(使用new关键字 或者使用malloc()分配的空间,)由const关键字修饰的变量位于常量区,这里面也包括char *c="asdjfksdjflksd"。
- 十进制化为十六进制,一般是先把十进制化为二进制,然后再把二进制化为十六进制,每四位二进制化为一位十六进制。
-
使用malloc()开辟的空间必须使用free()释放,不然会造成内存泄露。