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

今天主要读了第十五章中的前三部分的内容

友元就是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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值