2013年12月9日

C++对象模型(四):class成员初始化列表(Member Initialization List)

摘要: 本文是Inside C++ Object Model Chapter 2 部分的读书笔记。编译器如何处理初始化成员列表的。下列情况中,必须要使用member initialization list进行data member 的初始化:1) 当初始化一个reference member。2) 当初始化一个const member。3) 当调用一个base class 的constructor,而他拥有一组参数的时候。4) 调用一个member class 的constructor ,而他有一组参数。 编译器会一一操作初始化列表的成员,以适当的顺序在class的constructor中插入初始化操 阅读全文

posted @ 2013-12-09 20:10 anzhsoft 阅读(398) 评论(0) 推荐(0) 编辑

Program Transformation Semantics (程序转换语义学)

摘要: 本文是Inside The C++ Object Model Chapter 2 部分的读书笔记。讨论编译器调用拷贝构造函数时的策略(如何优化以提高效率),侯捷称之为"程序转化的语义学"或者说是关于编译器对于程序是如何进行有效转化或者说翻译,以实现C++的语法机制。主要来说有以下几种Semantics:1) 明确的初始化操作(Explicit Initialization)比如定义: X x0; 那么以下定义: X x1(x0); X x2 = x0; X x3 = X(x0); 都会被转化成: X x1,x2,x3; 在这里编译器并不会做这三个object的初始化,而是调 阅读全文

posted @ 2013-12-09 19:18 anzhsoft 阅读(308) 评论(0) 推荐(0) 编辑

C++对象模型(三):Program Transformation Semantics (程序转换语义学)

摘要: 本文是Inside The C++ Object Model Chapter 2 部分的读书笔记。是讨论编译器调用拷贝构造函数时的策略(如何优化以提高效率),侯捷称之为"程序转化的语义学"或者说是是关于编译器对于程序是如何进行有效转化或者说翻译,以实现C++的语法机制。主要来说有以下几种Semantics:1) 明确的初始化操作(Explicit Initialization)比如定义: X x0; 那么以下定义: X x1(x0); X x2 = x0; X x3 = X(x0); 都会被转化成: X x1,x2,x3; 在这里编译器并不会做这三个object的初始化,而 阅读全文

posted @ 2013-12-09 19:15 anzhsoft 阅读(167) 评论(0) 推荐(0) 编辑

导航