- 博客(6)
- 收藏
- 关注
原创 《深度探索c++内存模型》读书笔记 (五)
文章目录Data语意学数据成员的绑定 Data语意学 一个类对象所占空间的大小主要受以下三个因素影响: 语言本身的额外负担,(虚继承,虚函数) 编译器对特殊情况的优化处理(空的) 对齐 一个没有数据成员的普通对象(没有虚基类和虚继承),所占用的空间也不是0个字节。而是1个字节,这个是被编译器安插进去的,为了使这个对象在内存中保持独一无二的地址。然而,当这个类是一个类的父类时, 数据成员的绑定 数据成员本身的分析,直到整个class声明了才会开始。 而函数参数列表的分析,是从函数声明时就已经开始了。 .
2020-10-26 23:42:50 269 1
原创 《深度探索c++内存模型》读书笔记 (四)
文章目录程序转化语意学明确的初始化参数的初始化返回值的初始化在使用者层面做优化在编译器层面优化拷贝构造需不需要自己实现?成员们的初始化队伍 程序转化语意学 明确的初始化 如果有这样的定义: X x0; X x1(X0); X x2 = x0; X x3 = X(x0); 都将会导致X的拷贝构造函数被调用。 参数的初始化 如果函数定义如下 void foo(X x0); X xx; foo(xx); X那么调用foo函数时,将会调用X类的拷贝构造函数,生成一个临时对象,如下: X temp; temp.X:
2020-10-24 20:59:38 167
原创 《深度探索c++内存模型》读书笔记 (三)
文章目录拷贝构造函数Default MemberWise InitializationBitwise Copy Semantics不要Bitwise Copy Semantics重新设置虚函数表指针处理虚基类 拷贝构造函数 有三种情况,一个对象会以另一个对象的内容作为它的初始值。 假设有 class X {...}; 赋值操作 X x; X xx = x; 传参 void foo(X x); foo(xx); 接收返回值 X foo() { X xx; return xx; } 如果一个类定义了
2020-10-24 20:27:41 212
原创 《深度探索c++内存模型》读书笔记 (二)
@[TOC] 第二章 构造函数语意学 前言 c++ 编译器会在人意想不到的地方做一些隐式操作。例如,只含有一个参数的构造函数,会被当做类型转换运算符。而关键字explict就是为了阻止这一机制。 默认构造函数 c++ 编译器会在需要的时候自动生成默认构造函数。 带有默认构造函数的类对象成员 如果一个类没有任何的构造函数,但是它有一个对象成员,这个对象成员有一个默认构造函数。那么编译器将会为这个类生成一个默认构造函数。但是这个生成的时机会是在这个类被调用的时候。 如果有两个文件中都调用了这个类,那么默认构
2020-10-17 21:58:02 1966 5
原创 《深度探索c++内存模型》读书笔记 (一)
第一章 关于对象前言加上封装后的布局成本c++对象模式加上继承C++中的多态对象所占用的内存大小指针的类型加上多态之后 前言 在C语言里面,数据和函数是分开的,它们之间的关联是通过参数和返回值来取得联系。如: typedef struct point3d { float x; float y; float z; } Point3d; void print_point3d(const Point3d *p) { printf("%g %g %g", p->x, p
2020-10-16 23:27:28 428
原创 linux中的sed命令
介绍 sed (stream editor) 是一个用于处理文本的命令,参数少,易于掌握。sed按行读取文本文件,然后执行指定的操作。 语法 sed [option] …{script-only-if-no-other-script} [input-file]… -n , --quiet, --silent 取消自动打印## 标题模式空间 –debug -e script --expression=script 添加脚本到要执行的命令中 -f script-file --file=script-file 添
2020-10-14 23:19:49 266
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人