c++
文章平均质量分 78
落大雨起泡泡
这个作者很懒,什么都没留下…
展开
-
const从c到c++
const 修饰符在c和c++都能使用,用于修饰变量表示该变量不可改变。但是在具体的细节上,c与c++的处理不同,c++比c的处理更为完善。 首先,在c语言中const修饰的变量,都会有存储空间分配。 1. const修饰全局变量,会在只读存储区分配空间。 2. const修饰局部变量,会在栈上分配空间。 既然这样那我们便可以通过的取地址运算符&,获取对应的...原创 2018-03-25 13:17:28 · 122 阅读 · 0 评论 -
ELF文件格式解析
ELF的全称为(Executable Linkable Format),从名字上可以看出来这是一种可以被执行,可以被链接的格式文件。linux符合这两种格式的文件有哪些,可重定位文件(.o),共享库文件(.so),静态库文件(.a)当然可以认为.a文件可以认为是 .o文件时同一类型的,还有可执行文件。听说core文件也是ELF格式!ELF格式的文件有个显著的特点就是,所有的内容已段的形...原创 2019-04-11 22:56:40 · 853 阅读 · 0 评论 -
c++左值右值的概念
转载至:https://blog.csdn.net/hyman_yx/article/details/52044632转载 2018-05-10 15:01:40 · 587 阅读 · 0 评论 -
C++泛型编程
泛型编程概念 泛型编程是指不考虑具体类型的编程方式。这个可让代码尽可能的复用,试想如果要实现一个加法函数,如果考虑具体函数,那么就需要实习不同参数类型的函数,比如int,double甚至有的加法可能是两个对象相加这样不同的对象类型会继续衍生出更多的函数实现,但是如果能有一个兼容所有类型编程的方式,那么只需要一个函数就可以实现了。函数模板 函数模板是一种特殊的函数,可用不同的类型进行调用,和...原创 2018-05-01 18:40:59 · 390 阅读 · 0 评论 -
c++对象模型分析
类成员的访问 类class可以算是一种特殊的struct,都看做一些变量的集合,class和struct都遵循内存对其的原则。class中有2类基本要输,成员变量和成员函数。每个对象都拥有一套成员变量,而所有对象共享一套成员函数,成员函数位于代码段。 其实在运行时,类的访问权限限制是不存在,只在编译时检查。可以直接通过地址直接访问。调用成员函数时,对象的地址被作为参数隐式的传入,通过对...原创 2018-05-01 17:17:04 · 156 阅读 · 0 评论 -
C++操作符重载
操作符重载介绍 c++中可以重载操作符函数,来扩展操作符的功能。 操作符扩展的一般形式为:Type operator Sign(const Type& p1,const Type& p2);//Sign代表操作符如 + ,- 等等,具体参数个数视操作符而定 一般而言,将操作符重载为具体类的成员函数, 这样可以比全局函数少一左操作数,编译器将优先在类的成员函数中寻找...原创 2018-04-22 19:10:53 · 116 阅读 · 0 评论 -
c++杂记
1. c++ 调用c库函数 由于c++要支持函数的重载,所以c++编译器在编译函数时,生成在符号表中的函数名,与函数定义时函数名和函数参数都有关系。如int add(int x,int y){ return x+y;}int add(int x,int y,int z){ return x+y+z;} 这两个函数编译后生成的函数符号是不一样的,这一点可以通过导出符...原创 2018-04-03 21:55:51 · 129 阅读 · 0 评论 -
二阶构造模式
我们在创建对象的时候,需要调用构造函数,对对象做初始化,但是构造函数是没有返回值的,无法判断构造函数的执行结果。如果构造函数执行过程中,发生了异常,导致函数提前返回了,那么这种情况下,我们创建的对象会处于什么状态。 1. 构造函数确定对对象做初始状态,对象的创建与构造函数无关,也就是说存储对象的那片内存已经完成分配 2. 如果构造函数出现了异常,提前返回,就会导致对象的状态的不...原创 2018-04-15 22:54:35 · 399 阅读 · 0 评论 -
C++ 对象的构造
构造函数的调用 对象是依据某个类模板创建的客观存在,既然是客观存在那么它在某一时刻的状态应该是确定,所以我们在创建对象的时候需要固定其状态,也就是初始化,这就是构造函数的作用,初始化对象。class Test{ Test(){} Test(int i){}} 对象的构造一般有3 种方式:Test t(2);Test t = 2;Test t = test(2...原创 2018-04-14 15:54:16 · 822 阅读 · 0 评论 -
面向对象的基本概念
人们在处理事务之间的关系的时候,总是喜欢对事务进行分类处理,比如图示管里面的书籍排布,动物植物的分类,甚至日常生活中叫的出名字的如电脑,桌子,床等等都是一类事物。当我们对某些事物归类之后,便可以对这类事务做统一的处理,让事情变得更加简洁高效。如果我们能把现实生活中的各类的事物,如项目的各种需求,一一映射到我们程序中,用编程语言来表述出来。这样就会更加贴近实际,符合我们的正常的大脑思维,程序...原创 2018-04-14 15:02:51 · 237 阅读 · 0 评论 -
c++内联函数
在c++中推荐使用const定义的常量来替换宏定义,因为这样更安全。而对于宏定义函数则推荐使用内联(inline)函数来替换。 如果函数定义用inline修饰,就会向编译器请求对函数进行内联编译,也就是直接将函数体扩展到函数调用的地方。但是需要注意的是,默认情况下编译器不一定会接受内联请求。如果一定强制编译器内联编译函数,可以通过修改编译参数来保证。或者对于g++编译器,则可以通过_...原创 2018-03-25 22:13:33 · 114 阅读 · 0 评论 -
c++ 引用深入分析
我们知道c++中变量其实是用于标识一段内存空间的,但我们将一个变量赋值给一个引用时,我们便可以通过引用来操作该变量对应的内存空间,用引用名来标识该段内存。直观来说引用就类似于别名。 引用的本质到底是什么?引用是否占用了内存?占用了多大的内存? 将上面这段程序使用g++编译后的运行结果如下: 可以看到,引用也是占内存空间的,比如char 和char&一...原创 2018-03-25 17:24:04 · 172 阅读 · 0 评论 -
C/C++编译过程
以一个简单的helloworld.c为例:#include <stdio.h>int main(void){ print("hello world\n");}要将上诉程序编译位一个可执行的elf文件,需要经历如下步骤预处理(Prepressing),编译(Compilation),汇编((Assembly),链接((Linking)。1 .预处理(Pr...原创 2019-04-09 23:16:20 · 534 阅读 · 0 评论