
c++笔记
文章平均质量分 75
c++学习
丽丽的代码
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++的关键字volatile,mutable关键字,explicit关键字
遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。但是, 上面的代码中的_size代表的是字符串内存分配的大小, 那么调用的第二句 “CxString string2 = 10;volatile 指出 i 是随时可能发生变化的,每次使用它的时候必须从 i的地址中读取,因而编译器生成的汇编代码会重新从i的地址读取数据放在 b 中。首先, C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的。转载 2022-09-12 10:06:37 · 333 阅读 · 0 评论 -
c++的四种转换方式,完美转发底层如何实现,移动构造语句底层如何实现,auto推演,NULL和nullptr,C++的统一的初始化方案
代码】c11的新特性,c++的四种转换方式,完美转发底层如何实现,移动构造语句底层如何实现,auto推演。原创 2022-07-20 11:11:44 · 622 阅读 · 0 评论 -
map,unordered_map,multimap,lambda表达式
文章目录统计字符串中字符出现的次数map底层的实现是一个红黑二叉树统计字符串中字符出现的次数在map中[]运算符的重载的工能是访问或插入指定的元素”emplate<class _Key,class _Val>class map{ typedef pair<_Key, _Val> value_type;};//T树//哈希表//mapint main(){//统计字符串中字符出现的次数 string stra[] = { "map","duque","qu原创 2022-05-12 21:19:14 · 444 阅读 · 0 评论 -
C++vector里面的各种函数,C++vector创建二维数组,迭代器的失效问题
文章目录vector的初始化通过迭代器对vector里面的数据进行访问reserveresize列表方式初始化assign可以简单的将vector想象成一个可扩容的线性表vector的初始化int main(){ int ar[] = { 12,23,34 }; vector<int>ar1; vector<int>ar2 = {12,23,34,45,56}; vector<int>ar3(10, 23); vector<int>ar4(原创 2022-03-30 09:04:16 · 1234 阅读 · 0 评论 -
菱形继承,虚继承,STL
文章目录C++的4个子集C++的4个子集C子集class子集STLtemplate模板//函数重载参数的类型或者个数不同,在C11里面也可以根据你的作之和右值来判断void fun(int& a)//左值引用{ cout << "fun(int & a)" << endl;}void fun(const int& a)//万能引用不管你是左值还是右值{ cout << "fun(const int &a)" <原创 2022-03-29 15:54:28 · 3335 阅读 · 0 评论 -
工厂模式与shared_ptr
文章目录工厂模式图原创 2022-03-28 17:28:48 · 248 阅读 · 0 评论 -
右值引用,移动拷贝构造,移动复制函数,柔性数组,友缘
文章目录一,右值引用二,移动拷贝构造函数,移动赋值函数一,右值引用将亡值:表达式的运行中产生的一个不具有名字的实体;右值引用:对将亡值和纯右值进行引用 int a = 10; int& b = a; int&& c = 10; int&& d = c;//err此时c有了名字不再是右值String &&fun(){ String s2("yhping"); return s2;//s2有名字}二,移动拷贝构原创 2022-03-03 20:31:10 · 417 阅读 · 0 评论 -
构造函数的三个作用,()运算符的重载,*和->运算符的重载
文章目录后置++有两个参数运算符的重载什么时候以引用返回什么时候以值的形式返回一,构造函数的三个作用:后置++有两个参数运算符的重载什么时候以引用返回什么时候以值的形式返回返回的是*this就以引用返回这样可以少创建对象提高效率;返回的是重载里面新创建的对象就以值的形式返回;一,构造函数的三个作用:创建对象,对象初始化,类型转换(要实现类型转换构造函数只能是单参的)class Int{private: int Value;public: Int(int x = 0) :Value(原创 2022-03-01 11:38:30 · 549 阅读 · 0 评论 -
数组和引用,左值和右值,运算符的重载
文章目录数组和引用数组和引用int main(){ int ar[10] = {12,23,34,45,56,67,78,89,90,100}; int& a = ar[0]; a += 10; int (&br)[10] = ar;//int(*p)br=&ar;指向数组地址的指针和引用}原创 2022-02-28 23:13:55 · 461 阅读 · 0 评论 -
拷贝构造函数,运算符的重载,6个缺省的函数,连=
文章目录一,拷贝构造函数一,拷贝构造函数常引用可以引用字面常量普通引用不可以原创 2022-02-27 15:06:22 · 381 阅读 · 0 评论 -
引用,this指针,引用和指针的区别
文章目录一,引用引用和const二,引用和指针有什么样的区别?双向函数一,引用#ifdef __cplusplus//c++ cout<<"a= "<<a<<endl;//c++的方式#elseprintf("a=%d\n",a);//c语言的方式const int a=10;int b=0;int *p=(int*)&a;//OKint*s=const_cast<int*>(&a);//去常性强转(写的比较丑陋容易引起注原创 2022-02-26 23:08:07 · 251 阅读 · 0 评论 -
const和引用,this指针,构造函数和析构函数
文章目录一,const和引用二,this指针在成员方法之后加const,说名只能读取函数内对象属性的数值而不能修改相关属性的数值常对象只能调用常方法this指针值的传递(调用约定)可以通过改写调用约定来实现以入栈的方式三构造函数和析构函数构造函数生可带来而死不带去析构函数一,const和引用更为复杂的是二,this指针上述图片的代码为所有的属性共享那么怎么区分那个属性的哪个方法呢加粗样式有了this指针我们就节省了空间当对象调动成员函数时才有this指针,当我们编译函数时给原创 2022-02-26 19:22:50 · 245 阅读 · 0 评论 -
面向对象1:this指针,构造函数,析构函数,拷贝构造函数,运算符的重载,权限,初始化列表
文章目录1,抽象,封装2,this指针3,构造函数调动自己写的构造函数4,析构函数5,拷贝构造函数1,抽象,封装抽象:从目标中提炼出我们所关心的核心要素。比如说生活中的圆有很多,我们所关心的是其半径、面积、颜色等。封装:封装有两方面内容,一是将数据和函数绑定在一起,二是限制访问目标对象的内容,如private成员只能被类中的函数访问而不能在类外被访问。封装就是把你抽象起来的东西集中起来;2,this指针this指针是在编译期,自动加上的加在1,普通成员方法形参列表的第一个加上Type *c原创 2022-01-02 16:28:42 · 412 阅读 · 0 评论 -
c和c++的区别2,指针和数组的区别,命名空间,new和malloc,const,引用
文章目录1,指针地址数组名的区别2,命名空间3,输入输出4,malloc和new4.1malloc并free申请一个变量的空间,一维数组,5*10二维数组4.new 并delete申请一个变量的空间,一维数组,5*10二维数组5,const5.1,const在c语言里5.2const在c++里面1,指针地址数组名的区别指针和地址的区别数组名int arr[]={0}这里的arr是常量指针int *arr这里的arr是变量指针存放地址指针可以解引用指针是个变量,地址是个常量指针有类型;指针和原创 2021-12-30 15:10:29 · 564 阅读 · 0 评论 -
C和C++的区别1,函数的区别,内联函数,符号C++调用C代码,C语言调动C++
1,默认值参数在函数声明或者定义的时候,如果实参没有给形参传值,则按照默认值传参默认参数是在函数编译时期,直接生成入参指令;函数默认参数值只能传递常量;变量在编译期无法获取其值;默认值参数只能从右向左一次生成;可以在上卖弄函数的定义中先声明最右边的默认参数,在其下方可以只定义中间的默认参数从而达到右边起,两位设有默认参数;函数的默认值参数在同一作用域中只能赋值一次不能多次赋值;因为函数的默认参数值是在编译时生成入参指令,所以参数的默认值只在本文件中生效;(编译是单文件的操作)2,内联函数正原创 2021-10-19 17:07:47 · 341 阅读 · 0 评论