一个inline函数实体,在整个class声明未被完全看见之前,是不会被评估求值(evaluated)的,也就是说,对于如下代码:

 1 extern int x;
 2
 3 class A
 4 {
 5 public:
 6     ...
 7     //对于函数本体的分析将延迟,直至class申明的}出现时才开始。
 8     float X() const { return x; }
 9     ...
10 private:
11     float x;
12     ...
13 }
14 //这儿进行该函数的分析,所以此时用到的x不是全局变量x而是class A中的成员x

但是,member function的argument list并不为真。Argument list中的名称还是在它们第一次遭遇时被适当的决议(resolved)完成。下面的程序中,length的类型在两个member function signatures中都被决议(resolved)为global typedef,也就是int。当后续再有length的nested typedef声明出现时,c++标准就把稍早的绑定标志为非法(最后一局没大听懂):

#include <bits/stdc++.h>
using namespace std;typedef int length;class A
{typedef double length;//如果在这儿声明,那么就没问题。
public:void mumble(length val = 1){printf("%lf\n", val);}
private://typedef double length;如果在这儿声明的,那么mumble函数中length会被决议为int
};
int main()
{A a;a.mumble();return 0;
}

转载于:https://www.cnblogs.com/lthb/p/6638452.html

深度探索c++对象模型读书笔记:Data语意学-Data Member的绑定相关推荐

  1. 深度探索C++对象模型读书笔记-第六章执行期语意学

    在函数中,编译器会帮助将析构函数(Destructor) 安插在相应的位置.对于函数中的局部对象,会将析构函数安插在对象的每一个离开点. 例如: 1: void Function(int a) { 2 ...

  2. 深度探索C++对象模型读书笔记(2)

    以下测试平台均为vs 2012 指向Data Member的指针测试(1) #include <stdio.h>class Base1 { public: int val1; int va ...

  3. [读书笔记] - 《深度探索C++对象模型》第3章 Data语意学

    Table of Contents 1.Data Memeber的绑定 2.Data Member的布局 3.Data Member的存取 4."继承"于Data Member 4 ...

  4. 深度探索C++对象模型 学习笔记 第二章 构造函数语意学

    很多人抱怨说C++背着程序员做了太多事,如: if (cin) { /* ... */ } 为了让cin能转换为真假值,为cin定义一个类型转换运算符operator int(),就可以完成以上工作了 ...

  5. 《深度探索C++对象模型》--2 构造函数语意学

    1.default constructor的构造操作 C++standard:对于class X,如果没有任何user-declared constructor,那么会有一个default const ...

  6. 《Android深度探索卷一》读书笔记六

    1.简介 ARM架构的开发板基于X86架构的PC在CPU指令以及二进制格式上都有所不同.如果Linux驱动需要访问硬件(如LCD .WIFI,蓝牙等),这些硬件很难在PC上进行模拟,就要在带有这些硬件 ...

  7. 《深度探索C++对象模型》--4 Function语意学

     1.member的各种调用方式 (1)nonstaticmember functions C++的设计准则之一就是:非静态成员函数至少必须和一般的非成员函数有相同的效率,编译器内部将成员函数转换 ...

  8. 《深度探索C++对象模型》--5 构造析构拷贝 6 执行期语意学

     <深度探索C++对象模型>--5构造.析构.拷贝语意学 1.纯虚函数: (1)C++可以定义和调用一个纯虚函数,不过只可以静态调用,不可以由虚拟机制调用. 注意:pure virtu ...

  9. 《深度探索C++对象模型》读书笔记第五章:构造析构拷贝语意学

    <深度探索C++对象模型>读书笔记第五章:构造析构拷贝语意学 对于abstract base class(抽象基类),class中的data member应该被初始化,并且只在constr ...

最新文章

  1. cmake导入so库_libgo - 协程库、并行编程库
  2. 51nod 1766
  3. 广东高中生多少人_“广东人参”五指毛桃根的功效与作用,有多少人真的清楚...
  4. 有了这款Python神器,新手也会调试代码!
  5. 配置JDK环境变量详细步骤
  6. 一张图看懂“火星坐标系”
  7. java使用pdfbox将PDF转化为图片
  8. Oracle和plsql的卸载与安装
  9. 怎么实现MindMapper中剪贴画的添加
  10. 五险一金 | 2020年个人所得税税率表
  11. HTML做表格以及注册界面
  12. unreal 虚幻引擎学习资料
  13. informatica笔记
  14. Java GifDecode类分解gif图片
  15. java 画爱心壮那首歌最,抖音貂蝉大招画爱心的背景音乐是什么
  16. 通达OA v11.7 在线用户登录漏洞复现(附带一键getshell脚本)
  17. 创建全局函数mysql_MySQL系列(十):函数
  18. DevExpress Winform LabelControl 文本竖向纵向显示
  19. Android稳定性优化,你需要做好以下几点
  20. 0406复利计算6.0 结对:列志华,韩麒麟

热门文章

  1. 使用TensorFlow的基本步骤
  2. 联想笔记本电脑,重新安装系统之U盘启动方法
  3. 关于i++和++i的实验结果解释
  4. 光源时间_天哪!你们居然都错了!D65光源,指的是上午还是下午的太阳光?
  5. 线程池中阻塞队列的作用?为什么是先添加列队而不是先创建最大线程?线程池中线程复用原理
  6. 056_Object对象方法
  7. 菜鸟自学数据结构系列——(一)如何写出能够在VC下运行的单链表生成程序
  8. const的使用CC++
  9. html 监听input输入框的值,利用原生JS实时监听input框输入值
  10. c++ string 堆还是栈_5个刁钻的String面试题解析