C++学习
C++经典书籍的学习,包括《EFFECITVE C++》,《MORE EFFECTIVE C++》,《INSIDE C++ MODEL》
幸福的起点_
搬砖ing
展开
-
《深度探索C++对象模型》读书笔记第四章:Function语意学
一.Nonstatic Member Functions(非静态成员函数)准则:非静态成员函数至少和一般的非成员函数有相同的效率。编译器内部已经将成员函数转换为非成员函数。 转换分为三个部分: - 1.添加this指针为函数的第一个参数,如果成员函数是const, 那么this指针的类型为: const className * const this;并且对每一个nonstatic da...原创 2018-05-16 10:34:56 · 998 阅读 · 0 评论 -
《Effective C++》读书笔记第一章:让自己习惯c++
Accustoming Youself to C++条款1.视c++为一个语言联邦C++是个多重范型编程语言,同时支持过程形式、面向对象形式、函数形式、泛型形式、元编程形式。视c++为一个语言联邦,包括以下四个部分:C. C++说到底还是以C为基础。这是面向过程的部分,C与C++相比,少了模板、异常以及重载。Object-Oriented. 面向对象部分,包括封装、继承、多态以及虚...原创 2018-05-17 09:45:05 · 294 阅读 · 0 评论 -
《深度探索C++对象模型》读书笔记第一章:关于对象
《深度探索C++对象模型》读书笔记之 关于对象前言c语言中,“数据”和“处理数据的操作(函数)” 是分开声明的,将这种程序方法称为程序性(procedural),比如声明一个struct Point3d:struct Point3d { float x; float y; folat z;};而操作该数据数据的函数例如打印函数,只能另外定义成:vo...原创 2018-05-21 13:37:11 · 2266 阅读 · 2 评论 -
《深度探索C++对象模型》读书笔记第二章:构造函数语义学
《深度探索C++对象模型》读书笔记之 构造函数语义学编译器背着程序员做了很多事,explicit关键字的导入,是为了制止“单一参数的constructor”被当作一个conversion运算符。这一章中,挖掘了编译器对于“对象构造过程”的干涉,以及对于“程序形式”和“程序效率”的冲击。 一.Defalut Constructor的构造过程关键:是编译器需要(就会合成默认构造函数)...原创 2018-05-23 17:05:43 · 831 阅读 · 2 评论 -
《深度探索C++对象模型》读书笔记第三章:Data语意学
《深度探索C++对象模型》读书笔记之 Data语意学类的大小(sizeof)一个空类的大小通常为1,是因为编译器为其安插了一个char,以便这个类的任意两个object能够在内存中配置独一无二的地址。 一个类的大小通常与机器和编译期有关,受以下三个因素的影响: 1. 语言本身的额外负担 比如支持虚函数,或者虚继承。 2. 编译器对于特殊情况的优化处理 某些编译器会对empty...原创 2018-05-24 13:11:50 · 960 阅读 · 2 评论 -
《深度探索C++对象模型》读书笔记第五章:构造析构拷贝语意学
《深度探索C++对象模型》读书笔记第五章:构造析构拷贝语意学对于abstract base class(抽象基类),class中的data member应该被初始化,并且只在constructor中或者在其他member functions中指定初值。纯虚函数的存在纯虚函数,虚函数在声明后加上 = 0,纯虚函数的意义在于只定义一个可继承的接口,并没有实现(虚函数意义在于定义一个可继...原创 2018-05-25 14:45:09 · 870 阅读 · 3 评论 -
《深度探索C++对象模型》读书笔记第六章:执行期语意学
《深度探索C++对象模型》读书笔记第六章:执行期语意学C++在执行期的一些变化,例如临时对象的产生,临时对象的构造和析构成本是我们需要考虑的,我们将在第三节具体讲解。一.对象的构造和析构一般而言,我们将object尽可能放置在使用它的那个程序区段附近,这样可以节省非必要的对象的构造和析构成本。全局对象已经初始化全局对象均存储在data segment(数据段),未初始化...原创 2018-05-29 17:24:57 · 472 阅读 · 0 评论 -
《Effective C++》读书笔记第二章:构造析构赋值运算
Constructor, Destructors and Assignment Operator条款5.了解C++默默编写并调用了那些函数如果声明一个空类,编译器会为这个空类声明拷贝构造函数,拷贝赋值运算符,默认构造函数以及析构函数,并且这些都是public且是inline,还是trivial(平凡的,无价值的)。 对于trivial,我的理解是: - 比如trivial defaul...原创 2018-06-10 22:20:06 · 228 阅读 · 0 评论 -
《More Effective C++》读书笔记第一章:基础议题
第一章:基础议题条款一.仔细区分pointers和references首先,没有NULL reference(空引用),但是可以有NULL pointer(空指针)。考虑这样的情况:char *pc = 0;char& rc = *pc;这难道就是空引用了吗?错,这是未定义的行为,编译器可能产生任何输出,要杜绝这种行为,所以千万不要考虑让reference成为NU...原创 2018-06-12 22:10:35 · 234 阅读 · 0 评论 -
《More Effective C++》读书笔记第二章:操作符
第二章:操作符条款五.对定制的类型转换函数保持警觉一个类中的隐式类型转换符的形式是:operator type();这是一个有点奇怪的函数:关键词operator加上一个类型名称再加上一个括号。例如有理数类:class Rational {public: Rational(int numerator = 0, int denominator = 1); ...原创 2018-06-13 22:24:09 · 196 阅读 · 0 评论