• 关于类的作用域的注意事项


    1、类的作用域以外的数据成员和函数成员只能由对象、指针或者引用使用成员访问运算符来访问。作为类内的类型成员,通过作用域运算符访问。在类的外部成员名字被隐藏起来了。

    2、如果成员函数的返回类型是在类中定义的,那么在类的外部定义这种成员函数,还要额外指明返回类型是属于哪个类的。若没有指明,则其返回类型是类外的全局作用域的类型

    3、所谓名字查找,即寻找与所用名字最为匹配的声明,其过程是:首先在块中查找,只考虑在名字使用之前的最近的声明,若没找到,则往外层作用域查找,还是没找到,则程序报错。

    4、对于类中的成员函数来说,首先会编译类中成员函数的声明,然后当类定义完成后,就是全部可见后,才会编译成员函数的函数体。换句话说,编译器处理完类中所有成员函数的声明后,才会处理成员函数的定义

    5、若类中的成员函数同时处理声明和定义,那么只能在这种成员函数,使用已经定义的或者说已经出现的名字。若某个成员的声明使用了类中尚未出现的名字,那么编译器会在定义该类的作用域继续查找

    6、一般情况下,在内层作用域可以重新定义与外层作用域同名的名字,但是类不行,在类中使用了外层作用域中的名字,并且它代表的是一种类型,那么不能在类中重新定义。有的编译器不会检测到这种错误。

    7、类型名一般定义在类的开始处,这样就能保证所有使用该类型的成员,都能出现在类名定义之后。

    8、成员函数中的块作用域查找名字的过程:首先在成员函数体内查找,只考虑在名字使用之前出现的声明,若没有则回到成员函数的类中查找,若还是没找到,则在类外进行查找,准确地说是在成员函数定义之前的作用域查找。

    9、当成员函数的使用的成员对象隐藏了外层的同名成员对象,那么可以通过作用域运算符访问想使用但是被隐藏的成员

    10、在类外定义成员,名字查找的第三步,不仅要考虑类定义之前的那个全局作用域,还要考虑成员函数定义之前的全局作用域中的声明。

  • 相关阅读:
    面试题之发散思维能力:如何用非常规方法求1+2+···+n
    优秀Python学习资源收集汇总(强烈推荐)
    JavaScript简洁继承机制实现(不使用prototype和new)
    JsRender for index 循环索引使用说明
    JsRender for object 语法说明
    pasteimg浏览器中粘贴图片jQuery插件
    西安电子科技大学泄漏信息
    移动端二维码弹出框,自适应屏幕尺寸
    服务器端json数据文件分割合并解决方案
    html中a标签href属性的一个坑
  • 原文地址:https://www.cnblogs.com/Dark-King/p/9511813.html
Copyright © 2020-2023  润新知