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

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

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

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

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

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

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

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

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

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

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

  • 相关阅读:
    PHP 大小写转换、首字母大写、每个单词首字母大写转换相关函数
    【论文学习4】BiSample: Bidirectional Sampling for Handling Missing Data with Local Differential Privacy
    【论文学习3】Local Differential Privacy for Deep Learning
    【论文学习2】 Differential Privacy Reinforcement Learning
    深度学习中的优化算法
    Spatial crowdsourcing
    “pip install tensorflow ”出现错误
    python或pip'不是内部或外部命令”
    pip install torch出现错误
    打不开gitHub的解决方法
  • 原文地址:https://www.cnblogs.com/Dark-King/p/9511813.html
Copyright © 2011-2022 走看看