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 阅读(392) 评论(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 阅读(302) 评论(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 阅读(165) 评论(0) 推荐(0) 编辑

2013年12月8日

The Semantics of Constructors(拷贝构造函数之编译背后的行为)

摘要: 本文是 Inside The C++ Object Model's Chapter 2 的部分读书笔记。有三种情况,需要拷贝构造函数:1)object直接为另外一个object的初始值2)object作为函数以值传递的参数3) object以函数返回值形式返回如 果class没有提供一个explicit copy constructor时,编译器会以default memberwise initialization,也就是把每一个内建的或者派生的data member的值,从某个object直接拷贝到另外一个object上,对于member class object,以递归的方式施行m 阅读全文

posted @ 2013-12-08 21:53 anzhsoft 阅读(173) 评论(0) 推荐(0) 编辑

C++对象模型(二):The Semantics of Copy Constructors(拷贝构造函数之编译背后的行为)

摘要: 本文是 Inside The C++ Object Model's Chapter 2 的部分读书笔记。有三种情况,需要拷贝构造函数:1)object直接为另外一个object的初始值2)object作为函数以值传递的参数3) object以函数返回值形式返回如果class没有提供一个explicit copy constructor时,编译器会以default memberwise initialization,也就是把每一个内建的或者派生的data member的值,从某个object直接拷贝到另外一个object上,对于member class object,以递归的方式施行me 阅读全文

posted @ 2013-12-08 21:50 anzhsoft 阅读(144) 评论(0) 推荐(0) 编辑

The Semantics of Constructors: The Default Constructor (默认构造函数什么时候会被创建出来)

摘要: 本文是 Inside The C++ Object Model, Chapter 2的部分读书笔记。C++ Annotated Reference Manual中明确告诉我们: default constructor会在需要的时候被编译器产生出来。注意,这里是编译器需要,而不是程序需要。后来的C++ Standard 95修改了这种说法,但是实质上仍是相同的: For class X, if there is none user declared constrator, one default constructor will be implicitly generated by the Co 阅读全文

posted @ 2013-12-08 10:33 anzhsoft 阅读(203) 评论(0) 推荐(0) 编辑

C++对象模型(一):The Semantics of Constructors The Default Constructor (默认构造函数什么时候会被创建出来)

摘要: 本文是 Inside The C++ Object Model, Chapter 2的部分读书笔记。C++ Annotated Reference Manual中明确告诉我们: default constructor会在需要的时候被编译器产生出来。注意,这里是编译器需要,而不是程序需要。后来的C++ Standard 95修改了这种说法,但是实质上仍是相同的: For class X, if there is none user declared constrator, one default constructor will be implicitly generated by the Co 阅读全文

posted @ 2013-12-08 10:24 anzhsoft 阅读(142) 评论(0) 推荐(0) 编辑

导航