![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 57
猪在黑魔纹里
这个作者很懒,什么都没留下…
展开
-
C++ auto关键字浅析
auto 关键字是从c++11标准引入的,实际用起来还是非常爽的!原创 2022-03-15 16:26:39 · 1114 阅读 · 0 评论 -
C++ explicit关键字浅析
对于单参构造函数、首项参数无默认值的构造函数,为了不让c++太放飞自我,十分建议使用 explicit 关键字,取消编译器执行一些非预期的类型转换!原创 2022-03-10 11:04:52 · 1398 阅读 · 0 评论 -
C++提高程序鲁棒性防止空指针访问成员函数
首先定义一个类,有两个成员函数,其中一个会访问私有变量。class Person{public: void info() { cout << "this is a nullptr" << endl; } int showAge() { return m_Age; }private: int m_Age;};创建一个空指针,访问这两个成员函数。结果并不是两个两个函数都会报错,只有在空指针调用含有指定对象的成员函数时才会报错。而p->info(原创 2020-12-10 20:05:57 · 360 阅读 · 0 评论 -
C++值返回和引用返回的区别
现有一个Point类class Point{public: void setX(int x)//公共接口 { X = x; } int getX() { return X; } void setY(int y) { Y = y; } int getY() { return Y; } Point addXY_1(int x,int y)//值返回 { X += x; Y += y; return *this; } Point& addX原创 2020-12-10 19:13:01 · 1642 阅读 · 3 评论 -
C++构造函数的调用规则
构造函数的调用规则默认情况下,编译器至少给一个类添加3个函数:默认构造函数(无参,函数体为空)默认析构函数(无参,函数体为空)拷贝构造函数(对属性进行值拷贝)如果在类中定义了有参构造函数,编译器不再提供默认无参构造函数,但是会提供拷贝构造函数。如果在类中定义了拷贝构造函数,编译器不再提供其他构造函数。...原创 2020-12-10 15:29:18 · 112 阅读 · 0 评论 -
C++如何重载构造函数
构造函数如果在C++中实例化类时我们没有人为的使用构造函数,编译器会自动将构造函数空实现(调用构造函数但函数体内为空)。构造函数的作用是初始化类,当一个类被实例化时,首先被执行的就是构造函数。构造函数有三种类型:无参构造(默认构造)class Point{public: Point()//无参构造 { ... };};有参构造class Point{public: Point(int a)//有参构造 { ... };};拷贝构造class P原创 2020-12-10 15:07:53 · 925 阅读 · 0 评论 -
C++函数重载二义性问题
函数重载函数在同一个作用域。函数名相同。函数参数不同,或参数顺序不同。比如:void test(int a){ cout << "1" << endl;}void test(double a){ cout << "2" << endl;}特殊情况:当重载函数有默认参数时void test(int a,int b = 10){ cout << "1" << endl;}void test(int原创 2020-12-04 11:05:53 · 435 阅读 · 0 评论 -
C++引用的意义及用法
C++引用C++中引用变量是一个别名,它是某个已存在变量的另一个名字。一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量。C++ 引用 vs 指针引用很容易与指针混淆,它们之间有三个主要的不同:不存在空引用。引用必须连接到一块合法的内存。一旦引用被初始化为一个对象,就不能被指向到另一个对象,有点类似指针常量。指针可以在任何时候指向到另一个对象。引用必须在创建时被初始化。指针可以在任何时间被初始化。int a = 10;int &b = a;//引用,此时a,b操原创 2020-12-04 10:19:25 · 628 阅读 · 0 评论 -
C++内存相关,如何使用new和delete
C++程序在执行时,将内存大方向划分为4各区域:代码区:存放函数体的二进制代码,由操作系统进行管理。全局区:存放全局变量和静态变量以及常量。栈区:由编译器自动分配释放,存放函数的参数值、局部变量等。堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收。内存四区的意义:不同区域存放的数据,赋予不同的生命周期,使编程更加灵活。注意事项:对于栈区数据,不要返回局部变量的地址。int * func(){ int a =10;//局部变量存放在栈区,栈区的数据在函数执原创 2020-12-03 17:23:15 · 314 阅读 · 0 评论 -
C++指针在函数中的用法
函数中的数值传递分为值传递和地址传递。值传递是单纯的复制,修改的只是形参。void swap(int a, int b){ int temp = a; a = b; b = temp; cout << "swap a = " << a << endl; cout << "swap b = " << b << endl;}地址传递是由形参复制实参的地址,通过解引用的方式访问这个地址,修改后得到的是实参地址上的数据,也原创 2020-12-03 11:53:42 · 213 阅读 · 0 评论 -
C++指针知识点浅析
指针是一种特殊的变量,他可以指向数据的内存地址,并且可以通过解引用的方式修改内存地址所对应的数据。通过 & 取值符可以获得数据对应的地址,通过 * 对指针解引用可以修改地址对应的数据。 int a = 10; int *p; p = &a;//&取值符,访问值对应的内存 int *p = &a。 cout << "解引用前 a = " << a << " a的地址为 &a = " << &a <原创 2020-12-03 11:04:31 · 158 阅读 · 0 评论