ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

类成员的编译顺序之嵌套类型对类的影响

2021-06-19 13:03:33  阅读:127  来源: 互联网

标签:函数 编译 成员 length 嵌套 对类 类型


 

  现在编译器编译类时按照如下顺序:

    ①类成员的声明

    ②成员函数的函数体在类全部可见后开始编译

  而类成员的编译顺序则按照成员在类中的声明顺序进行编译,其中类成员包括:①数据成员②成员函数③嵌套类型(nested type)④枚举成员⑤模板成员。

  由于成员函数的声明包括返回类型,函数名和形参列表。所以其中形参列表和返回类型可能受到嵌套类型定义位置的影响,示例如下:

  1 #include <typeinfo>
  2 #include <iostream>
  3 #include <string>
  4 using namespace std;
  5 typedef string length;
  6 class A
  7 {
  8 public:
  9     void foo(length a)
 10     {
 11         cout<<typeid(a).name()<<endl;
 12     }
 13     typedef int length;
 14     length b;
 15 };
 16 
 17 int main()
 18 {
 19     A a;
 20     cout<<typeid(a.b).name()<<endl;
 21     a.foo("abc");
 22 }  

  输出结果

i
NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE

  可以看出成员函数foo的形参类型受到全局类型别名length的控制,类型为string,而数据成员b的类型则受到嵌套类型length的影响。

  所以类的定义中包含嵌套类型时最好将嵌套类型放到类的起始处。

  

  

标签:函数,编译,成员,length,嵌套,对类,类型
来源: https://www.cnblogs.com/wildricky/p/14902622.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有