
C++
mxyhktk
这个作者很懒,什么都没留下…
展开
-
C++中全局变量和静态变量析构顺序
第一种情况:代码:A a;int main(int argc, char **argv){ static C c; B* b = new B; D d; delete b; return 0;}结果:第二种情况:A a;static C c;int main(int argc, char **argv){ B* b = new B; D d; delete b; return 0;}结果:第三种情况原创 2021-05-22 19:38:53 · 1193 阅读 · 0 评论 -
c++中explicit的作用
仅含一个参数的构造函数和除了第一个参数外其余参数都有默认值的多参构造函数承担了两个角色。(1)是个构造函数;(2)是默认,且可以承担隐式类型转换的功能。explicit的作用:在c++中,explicit只能用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换,只能以显示的方式进行类型转换。例子(1) 未加入explicit class Circle { public: Circle(double r) : m_R(r) {} Circle原创 2021-04-26 15:11:11 · 2022 阅读 · 0 评论 -
C++中各种标准输入函数的总结
scanf()函数原型:int scanf(const char *restrict format,…);入口参数:第一个参数是格式字符串,它指定了输入的格式,…格式化后的字符串存取地址。返回值:函数返回值为int类型,如果读取到了“文件结束”则返回EOF,EOF为Ctrl+z或者Ctrl+d。其他情况则返回int型数字,例如:int res = scanf("%d %d",&a,&b);如果a,b都读取成功,则返回2;如果a,b只读取成功了一个,则返回1;如果a,b都没有读取成功,.转载 2021-04-20 20:13:07 · 423 阅读 · 0 评论 -
关于浮点数做大小比较的注意点
因为计算机中表示小数时(float,double),都是有误差的,因此在判断两个小数是否相等或者一个浮点是是否等于0时,只能判断它们之差的绝对值是不是在一个很小的范围内。#define FLOAT_EPS 1e-6#define DOUBLE_EPS 1e-15 float f_float,f1_float,f2_float;double d_double,d1_double,d2_double; /* 要判断一个单精度浮点数等于0 */if( fabs(f_float) <= FLO原创 2021-04-20 20:11:49 · 352 阅读 · 0 评论 -
C++中使用cin之后再使用getline出问题的解决办法
以下代码出现的问题:int main(int argc, char **argv){ int a,b; cin >> a >> b; cout << a+b <<endl; string line; getline(cin,line); return 0;}使用cin >> a >> b;之后再使用getline(cin,line);发现程序执行完cin >> a &原创 2021-04-18 17:01:52 · 1433 阅读 · 0 评论 -
C++之set容器特性
setkey是独一无二的,不可以重复keyset插入的数据是排序好的insert()插入数据原创 2021-04-18 13:06:53 · 515 阅读 · 0 评论 -
C++中static const与static constexpr的类内变量成员初始化
1.一般static类内成员变量class A {public: static int i1; static bool b1; static char c1; static float f1; static double d1; //以下错误,不能将一般static类型的变量在类内初始化,只能进行声明 //static int i2 = 2; //static bool b2 = true; //static char c2 = 'c'; //static float f2 =原创 2020-12-31 15:49:26 · 4068 阅读 · 2 评论 -
C++的bool类型初始化问题
C++中的bool类型必须要进行初始化,否则分配的内存单元是随机乱码。原创 2020-08-31 20:29:16 · 2288 阅读 · 1 评论 -
C++创建二维数组
C++中利用vector创建二维数组二维数组的创建vector <int> vec(10,90); //将10个一维动态数组初始为90vector<vector<int>> vec(row,vector<int>(col,0)); //初始化row * col二维动态数组,初始化值为0二维数组长度获取int row = vec.size(); //获取行数int col = vec[0].size(); //获取列数二维数组赋值原创 2020-08-12 15:08:50 · 165 阅读 · 0 评论 -
C++之四个智能指针
C++的四个智能指针1.auto_ptr(c++98的方案,cpp11已经抛弃)2.unique_ptr(替换auto_ptr)3.shared_ptr4. weak_ptrC++里面的四个智能指针: auto_ptr, shared_ptr, weak_ptr, unique_ptr 其中后三个是c++11支持,并且第一个已经被11弃用。为什么要使用智能指针:智能指针的作用是管理一个指针,因为存在以下这种情况:申请的空间在函数结束时忘记释放,造成内存泄漏。使用智能指针可以很大程度上的避免这个问题,因转载 2020-06-22 21:19:08 · 196 阅读 · 0 评论 -
C++之指针常量和常量指针区别
普通变量:int a=1; //整型变量const int b=2; //常量int const b=2;//这里定义和上面定义是一个意思,建议按照上面的规范写代码指针:普通指针int *p; //普通整型指针p=&a;int *p=&a;//此处与上面定义赋值是一样的,在此写出,只是为了下面的对比。*p=2;//可以更改指针指向变量的值,相当于变量a的值被更改为2int c=3;p=&c;//也可以更改指针的指向,相当于由指向变量a转变为指向变量c/原创 2020-06-06 21:43:40 · 254 阅读 · 0 评论 -
C++之引用和指针区别
概念:指针是指向一块内存,保存的是所指向内存的地址。 引用是某块内存的别名。使用:指针在使用时需要在名称前加 *。 引用使用时可以直接使用名称。区别:指针可以指向空指针,并且可以更改指针的指向。指针理论上可以多级 int ***p; 引用在初始化时直接定义其指向,并且不能再更改,不能指向空指针。引用只能一级引用 int...原创 2020-02-05 11:34:23 · 99 阅读 · 0 评论 -
C++中“非常量引用的初始值必须是左值”的处理方法
转自:https://blog.youkuaiyun.com/qq_27923041/article/details/950600941 左值和右值在C++中,左值可以出现在赋值语句的左边和右边;右值只能出现在赋值语句的右边,不能出现在赋值语句的左边。变量是左值,常量是右值。2 引用引用(reference)为对象起了另外一个名字,引用类型引用(refers to)另外一种类型。通过在变量名前添加“&”符号来定义。引用具体的使用方法请参考《C++的引用与重载函数》。3 非常量引用的初始值必须是左转载 2020-12-16 21:02:02 · 2770 阅读 · 0 评论