zoukankan      html  css  js  c++  java
  • 关于类的作用域的注意事项

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

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

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

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

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

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

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

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

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

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

  • 相关阅读:
    LeetCode数字之和总结
    排序类总结
    web sockect的练习
    RNA速率scVelo
    创建Numpy数组的不同方式
    numpy的课程学习二
    scrapy的cmdline命令和其文件写入乱码问题
    scrapy选择器
    python数据分析的numpy学习笔记
    Numpy的学习笔记一
  • 原文地址:https://www.cnblogs.com/Dark-King/p/9511813.html
Copyright © 2011-2022 走看看