今天主要读了第十五章中的前三部分的内容
友元就是friend class或者friend func。为什么需要友元?例如遥控器和TV,彼此既不是is-a也不是has-a关系,但遥控器要能操作电视机,那么遥控器就得设定为电视机的友元。
友元就是friend class或者friend func。为什么需要友元?例如遥控器和TV,彼此既不是is-a也不是has-a关系,但遥控器要能操作电视机,那么遥控器就得设定为电视机的友元。
class Self
{
friend class F;
};
这样声明后,F就是Self的朋友了,F可以使用Self里的任意一个成员,不管是不是私有
或者可以设定某个函数为友元,例如:
class F
{
public set();
}
class Self
{
friend void F::set();
}
注意声明的次序,尤其是当友元函数使用对方的类的类型时。
类之间可以互为友元,也可以多个类同时声明一个或多个函数为它们共同的友元
内嵌类,也就是类中类,例如下面的small就是一个内嵌类:
class Big
{
public:
class small
{.....};
....
};
内嵌类不一定只能供Big类使用,声明为public后可以被外部世界使用,但是呢,得这样用:
Big::small s
也就是得加前缀Big::
异常机制
主要说下和java的不同。java的throws 可以写在函数标题右侧,但是C++里不建议这样写。
throws异常写在函数内,比如
int func(int x)
{
if(x==0)
throw deal_func(x); //这个函数是异常处理函数,自己写,返回一个异常对象Type t
return 1/x;
}
然后外面这样捕捉这个异常:
try
{
int xx = func(0);
}
catch (Type &t)
{
//这里做些处理
}