C++初阶
文章平均质量分 74
C++初阶内容
c语言鹌鹑蛋
这个作者很懒,什么都没留下…
展开
-
C++ --- 模板为什么不能分离编译?
编译后生成func.obj文件。最后在链接阶段时,链接器会根据两个.obj文件的符号表,发现func.obj文件中有与test.obj文件中对应的Add函数的符号,这时链接器就回为该函数分配地址,运行时就可根据该地址实现特定的功能。原创 2024-09-26 16:59:20 · 707 阅读 · 0 评论 -
C++ ---- vector的底层原理剖析及其实现
vector 是 C++ 标准模板库(Standard Template Library, STL)中的一个非常有用的容器。它是一个序列容器,可以存储具有相同数据类型的元素集合,这些元素在内存中连续存储。与数组相似,但 vector 提供了更多的灵活性和功能。主要特点:1.动态数组:vector 可以动态地增加或减少其大小,这意味着你可以根据需要存储更多的元素,而不需要担心数组越界的问题。2.随机访问:vector 支持随机访问,即你可以使用下标(索引)直接访问容器中的任何元素,其时间复杂度为 O(1)原创 2024-08-03 21:46:40 · 1182 阅读 · 3 评论 -
C++ --- 拷贝构造函数的细节
若未显式定义拷⻉构造,编译器会⽣成⾃动⽣成拷⻉构造函数。⾃动⽣成的拷⻉构造对内置类型成员变量会完成值拷⻉/浅拷⻉(⼀个字节⼀个字节的拷⻉),对⾃定义类型成员变量会调⽤他的拷⻉构造。像Date这样的类成员变量全是内置类型且没有指向什么资源,编译器⾃动⽣成的拷⻉构造就可以完成需要的拷⻉,所以不需要我们显⽰实现拷⻉构造。原创 2024-07-15 21:16:40 · 344 阅读 · 2 评论 -
C++ --- std::array容器与std::vector容器的区别
在C++中,array和vector都是用于存储一系列相同类型元素的容器,但它们之间存在几个关键的区别。这些区别主要体现在内存管理、大小固定性、性能以及功能特性等方面。原创 2024-08-08 21:14:18 · 793 阅读 · 2 评论 -
C++ --- 内存管理方式
C语言内存管理方式在C++中可以继续使用,但有些地方就无能为力,而且使用起来比较麻烦,因此C++又提出了自己的内存管理方式:通过new和delete操作符进行动态内存管理。原创 2024-07-17 21:54:50 · 700 阅读 · 1 评论 -
operator new函数、operator delete函数
new和delete是用户进行动态内存申请和释放的操作符,operator new 和operator delete是系统提供的全局函数,new在底层调用operator new全局函数来申请空间,delete在底层通过operator delete全局函数来释放空间。原创 2024-07-17 22:13:54 · 221 阅读 · 1 评论 -
C++ --- nullptr
f(int*)函数,但是由于NULL被定义成0,调⽤了f(int x),因此与程序的初衷相悖。中引⼊nullptr,nullptr是⼀个特殊的关键字,nullptr是⼀种特殊类型的字⾯量,它可以转换。C++中NULL可能被定义为字⾯常量0,或者C中被定义为⽆类型指针(void*)的常量。定义,在使⽤空值的指针时,都不可避免的会遇到⼀些⿇烦,本想通过f(NULL)调⽤指针版本的。使⽤nullptr定义空指针可以避免类型转换的问题,因为。,⽽不能被转换为整数类型。原创 2024-07-11 17:52:27 · 235 阅读 · 3 评论 -
C++初阶 ----- 引用、const引用
引用不是新定义一个变量,而是给已经存在的变量取一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用一块内存空间。比如,西游记中“齐天大圣”,“弼马温”指的都是孙悟空。类型& 引⽤别名 = 引⽤对象;/ 引⽤:b和c是a的别名int& b = a;int& c = a;/ 也可以给别名b取别名,d相当于还是a的别名int& d = b;++d;return 0;由图中可知,d改变后a,b,c也改变了。原创 2024-07-10 17:31:40 · 368 阅读 · 3 评论 -
C++ --- 初始化列表
在C++中,初始化列表(Initializer List)是构造函数的一个非常有用的特性,它允许在对象创建时直接初始化成员变量。这通常比先构造对象再调用成员函数设置成员变量的值更高效,尤其是对于那些非基本数据类型(如类类型)的成员变量来说,因为使用初始化列表可以避免不必要的拷贝或移动操作。因为a2需要先初始化,而a1还未初始化,a1的值为随机值,所以给a2初始化为a1的随机值。然后初始化a1,初始化为1。其中a1的值是1,a2的值是随机值。输出:1 , 随机值。原创 2024-07-15 22:11:57 · 300 阅读 · 1 评论 -
C++ --- 类对象大小的计算
对象中没办法存储,这些指令存储在一个单独的区域(代码段),那么对象中非要存储的话,只能是成员函数的指针。Person 类实例化p1,p2两个对象,p1,p1都有各自的成员变量_age/_name/存储各自的数据,但是p1,p2的成员函数Init ()/Print() 指针却是一样的 ,存储在对象中就浪费了,因为如果Person类实例化了100个对象,那么成员函数指针就重复存储100次,太浪费了。• 如果嵌套了结构体的情况,嵌套的结构体对⻬到⾃⼰的最⼤对⻬数的整数倍处,结构体的整体⼤⼩。原创 2024-07-11 18:33:50 · 414 阅读 · 3 评论