第七章;类的作用域---知识点及习题答案

一、类的作用域
(1)如果我们给Screen添加一个如下所示的size成员将发生什么情况?如果出现了问题,请尝试修改它。

        pos Screen::size() const
        {
          return height *width;
        }

解析:知识点1:一个类就是一个作用域,函数使用的相关变量名,已经明确了在类的作用域当中,所以不必再进行说明
知识点2:在类的外部定义的函数,必须声明类作用域,其函数名和返回类型都需要进行声明
此题的pos在类中声明定义,在外部使用时需要声明作用域

 Screen::pos Screen::size() const

(2)如果我们把C++primer课本的第256页Screen类的pos的typedef放在类的最后一行会发生什么情况?

			知识点1:名字查找的顺序:由内而外、自上而下
			知识点2:类的定义处理步骤:首先编译成员的声明,直到类全部可见是再编译函数体
			即成员函数在类的声明全部处理完之后才会被定义,所以可以调用函数中定义的任何名字
			知识点3:在类中,类型名要特殊处理,最好是定义在类的一开始,并且不能与外层作用域中同名
			此题中,会出现错误:pos未定义

(3)解释下面代码的含义,说明其中的 Type和initVal分别使用了哪个定义。如果代码存在错误,尝试修改它。

				     typedef string Type;
				     Type initVal();
				     class Exercise
				     {
				     public:
				             typedef double Type;
				             Type setVal(Type);
				             Type initVal();
				    private:
				    int val;
				     };
				     Type Exercise::setVal(Type parm)
				     {
				     val = parm + initVal();
				     return val;
				     }

             Type有两种类型,应将最后一个函数的Type也声明为Exercise::作用域,因为返回值是double类型
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

N1314N

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值