【今日学习】C++ Primer Plus 第六版——友元、内嵌类、异常

来源:互联网 发布:移动4g网络套餐 编辑:程序博客网 时间:2024/05/18 02:43
今天主要读了第十五章中的前三部分的内容

友元就是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)
{
    //这里做些处理
}
0 0
原创粉丝点击