摘要:
常函数: void func() const成员函数后加const后我们称为这个函数为常函数常函数内不可以修改成员属性成员属性声明时加关键字mutable后,在常函数中依然可以修改 this指针的本质是一个指针常量person * const this,这个指针指向的位置是不可更改的,而在函数后加了 阅读全文
posted @ 2022-04-09 22:19
纸包鱼
阅读(56)
评论(0)
推荐(0)
摘要:
c++中的空指针也是可以调用成员函数的 但是只能调用成员函数和静态成员变量,因为这些成员不需要this'指针指向 其他的成员会隐式由this指向,而此时this = NULL,所以无法调用 阅读全文
posted @ 2022-04-09 22:10
纸包鱼
阅读(63)
评论(0)
推荐(0)
摘要:
c++会提供特殊的对象指针,this指针,指针指向被调用的成员函数所属的对象 this指针是隐含每一个非静态成员函数内的一种指针this指针不需要定义,直接使用即可 this指针的用途:当形参和成员变量同名时,可用this指针来区分,解决名声冲突在类的非静态成员函数中返回对象本身,可使用return 阅读全文
posted @ 2022-04-09 22:06
纸包鱼
阅读(65)
评论(0)
推荐(0)
摘要:
c++类中,成员变量和成员函数分开存储,只有非静态成员才属于类的对象中的,因为静态成员在一个对象之上,相当于总揽全局 如果用sizeof来计算类的大小,函数的大小是不计算在内的,只计算成员变量的 如果空类也有一个字节,为了区分不同的空对象所站的位置。 计算类大小的时候,静态变量同样不计算在内,因为静 阅读全文
posted @ 2022-04-09 21:47
纸包鱼
阅读(38)
评论(0)
推荐(0)
摘要:
静态成员就是在成员变量和成员函数前加上关键字static,称为静态成员静态成员分为: 静态成员变量所有对象共享同一份数据在编译阶段分配内存类内声明,类外初始化静态成员函数所有对象共享同一个函数静态成员函数只能访问静态成员变量 要注意定义在main( )函数之前的全局对象、静态对象的构造函数在main 阅读全文
posted @ 2022-04-09 21:36
纸包鱼
阅读(139)
评论(0)
推荐(0)
摘要:
类中成员可以是另一个类对象 构造顺序构造在其中的类对象,在构造自身,析构函数顺序相反,线删除自身,再删除其中的对吸纳风格 阅读全文
posted @ 2022-04-09 21:30
纸包鱼
阅读(82)
评论(0)
推荐(0)
摘要:
构造函数():属性(值),属性(值),。。。{} 类中初始化函数的简化写法 阅读全文
posted @ 2022-04-09 21:19
纸包鱼
阅读(21)
评论(0)
推荐(0)
摘要:
浅拷贝,编译器提供的简单的复制拷贝操作 深拷贝,在堆区重新申请空间,进行拷贝 当有指针和堆区存在时浅拷贝可能会造成重复释放问题,这种时候要自己定义深拷贝函数防止出现错误 、/拷贝构造函数 Person(const Person& p) { //如果不利用深拷贝在堆区创建新内存,会导致浅拷贝带来的重复 阅读全文
posted @ 2022-04-09 19:32
纸包鱼
阅读(80)
评论(0)
推荐(0)
摘要:
person(const person & p) {} 默认情况下,c++编译器至少给一个类添加3个函数1.默认构造函数(无参,函数体为空)2.默认析构函数(无参,函数体为空)3.默认拷贝构造函数,对属性进行值拷贝 构造函数调用规则如下:如果用户定义有参构造函数,c++不在提供默认无参构造,但是会提 阅读全文
posted @ 2022-04-09 19:13
纸包鱼
阅读(50)
评论(0)
推荐(0)
摘要:
两种分类方式:按参数分为: 有参构造和无参构造按类型分为: 普通构造和拷贝构造(const person &p)三种调用方式:括号法,通过()中的参数确定重载初始化函数调用哪一个,如果是默认构造函数的话不要加(),否则会被看为函数声明。显示法,显示说明变量的值,person p = person(p 阅读全文
posted @ 2022-04-09 19:06
纸包鱼
阅读(36)
评论(0)
推荐(0)
摘要:
c++类中的构造函数用来初始化对象,在创建对象和赋值是使用 析构函数用来清理对象,在对象销毁前使用 一般会有编译器自动调用,如果有特殊要求可以手动实现 构造函数语法:类名(){}1. 构造函数,没有返回值也不写void2. 函数名称与类名相同3. 构造函数可以有参数,因此可以发生重载4. 程序在调用 阅读全文
posted @ 2022-04-09 18:42
纸包鱼
阅读(63)
评论(0)
推荐(0)
摘要:
定义了头文件include“head.h”,也确实加载了,但是一直显示头文件中声明的函数未定义,因为我定义到另一个cpp文件中了,vscode没有自动连接两个cpp文件,要手动添加,或者在tasks.json里边加 cd "d:\desk\cpp\" ; if ($?) { g++ c++_1-16 阅读全文
posted @ 2022-04-09 18:32
纸包鱼
阅读(591)
评论(0)
推荐(0)
摘要:
1、VSCode代码缩进快捷键选中需要缩进的代码块,然后使用下面的快捷键:Ctrl + [ 和 Ctrl + ]可以实现代码的向左移动或者向右移动。2、VSCode代码对齐快捷键先选中需要代码对齐的代码块,然后使用下面的快捷键:Shift + Alt + F 阅读全文
posted @ 2022-04-09 17:21
纸包鱼
阅读(2761)
评论(0)
推荐(0)
摘要:
在使用时,一般将成员属性设置为私有,以方便自己控制读写权限,通过public函数来进行 阅读全文
posted @ 2022-04-09 17:06
纸包鱼
阅读(76)
评论(0)
推荐(0)
摘要:
两者都可以用来定义类,唯一的不同就是默认权限不同 class默认是public,struct是private 阅读全文
posted @ 2022-04-09 16:48
纸包鱼
阅读(41)
评论(0)
推荐(0)
摘要:
public公共权限 protected 保护权限 private 私有权限 public成员类内可以访问,类外也可以访问 private,类内可以访问,类外不可以访问,在继承时,子类不可访问 protected,类内可以访问,类外不可以访问,在继承时,子类可以访问 阅读全文
posted @ 2022-04-09 16:47
纸包鱼
阅读(98)
评论(0)
推荐(0)
摘要:
#define和那两个都不一样,它属于宏,是预处理器的一部分。预处理是在编译之前的一道,简单地进行字符串替换。它不按照语言的语法,而是直观自己的语法。你#define里面写的东西会被简单粗暴地塞进去 1、static全局变量 与#define普通全局变量 有什么区别?全局变量(外部变量)的说明之前再 阅读全文
posted @ 2022-04-09 16:40
纸包鱼
阅读(231)
评论(0)
推荐(0)
摘要:
c++面向对象三大特性,封装,继承,多态 具有相同性质的对象,可以抽象为类 封装:将属性和行为作为一个整体,表示一个对象,并将其加以权限控制 设计类:class 类名 {访问权限:属性/行为} 类可以认为是结构体的一种超进化,相比于结构体有更多的特性 阅读全文
posted @ 2022-04-09 16:25
纸包鱼
阅读(37)
评论(0)
推荐(0)
摘要:
函数名相同的时候重载,可以提高复用性 主要通过不同类型,个数,顺序的函数参数来进行区分 函数返回值不可以作为重载 引用也可以作为函数重载条件 而当函数中有默认参数时,重载中默认参数也是默认加入的,没有优先级 底层的实现原理是使用重命名技术来区分参数不同的同名函数 阅读全文
posted @ 2022-04-09 16:14
纸包鱼
阅读(26)
评论(0)
推荐(0)
摘要:
函数默认参数 返回类型 函数名(函数变量 = 默认值){} 默认值可以修改,如果不传入则默认使用默认值,设置为默认值的变量右边必须全部都是默认值 如果函数声明有了默认参数,那么函数的实现就不能有默认参数,主要为了防止二义性 函数站位参数 函数形参列表中可以有站位参数,站位参数也可以有默认参数 返回值 阅读全文
posted @ 2022-04-09 16:02
纸包鱼
阅读(27)
评论(0)
推荐(0)
摘要:
主要用来修饰形参,防止误操作 const int&ref = 10合法 相当于int temp = 10; const int & ref = temp 单纯的引用是不能引用右值的 一般是在函数参数列表中,const int &a,主要是为了防止对引用的值进行了修改 阅读全文
posted @ 2022-04-09 15:52
纸包鱼
阅读(24)
评论(0)
推荐(0)
摘要:
c++引用的本质就是一个引用常量 int &ref=a;int * const ref = a,两者等价 阅读全文
posted @ 2022-04-09 15:47
纸包鱼
阅读(45)
评论(0)
推荐(0)
摘要:
左值指的是既能够出现在等号左边也能出现在等号右边的变量(或表达式),右值指的则是只能出现在等号右边的变量(或表达式) 通常来说有名字的变量就是左值,而由运算操作所产生的中间结果(没有名字)就是右值 对于基础类型,右值是不可被修改的(non-modifiable),也不可被 const, volati 阅读全文
posted @ 2022-04-09 15:43
纸包鱼
阅读(167)
评论(0)
推荐(0)
摘要:
返回值为值类型时。使用临时对象(temporary object)来保存函数的返回值。函数的返回值用于初始化调用点的一个临时对象,该临时对象就是函数调用的结果。其返回值为右值。不能作为左值。 返回值是引用类型时,其返回值即为return的变量,所以不需要临时对象保存其返回值。所以,对于返回值为引用类 阅读全文
posted @ 2022-04-09 15:27
纸包鱼
阅读(489)
评论(0)
推荐(0)
摘要:
将引用作为形参也可以直接改变实参 因为引用相当于对再次进行了一个变量名到变量地址的映射,这时使用的形参改变值的时候改变的也是真实实参地址中的值,当函数结束后,局部变量会销毁,但是因为引用生成变量代表的那快地址此时依旧有其他的变量名在占用,所以只会销毁形参的变量名,不会销毁地址中的值 阅读全文
posted @ 2022-04-09 14:50
纸包鱼
阅读(103)
评论(0)
推荐(0)
摘要:
引用:给变量取一个别名 数据类型 & 新名 = 原名,数据类型与原名一致。 这样新名与原名都对应到同一段地址中存放的数据,只不过有了两个名字,并不是拷贝操作 引用在使用时必须要进行初始化,并且初始化之后不可改变 可以定义数组引用,不能定义引用数组,可以定义指针数组 int a, b, c;int* 阅读全文
posted @ 2022-04-09 14:45
纸包鱼
阅读(31)
评论(0)
推荐(0)
摘要:
开辟数组 new 数据类型 【元素数】 返回一个连续空间的首地址 释放数组 delete【】 变量名 阅读全文
posted @ 2022-04-09 14:17
纸包鱼
阅读(132)
评论(0)
推荐(0)
摘要:
栈区,编译器运行程序中自动保存,自动释放 注意不要放回函数的局部变量的地址,因为函数结束后就自动的销毁了,所以此时这个局部变量得地址无用,形参也是一个局部变量,因为是拷贝过去的 堆区,程序员手动申请,手动释放 new用来申请内存 数据类型 *变量名 = new 数据类型 变量 return 变量名 阅读全文
posted @ 2022-04-09 14:14
纸包鱼
阅读(72)
评论(0)
推荐(0)
摘要:
static修饰静态变量 const修饰局部,全局常量 const定义的常量在超出其作用域之后其空间会被释放,而static定义的静态常量在函数执行后不会释放其存储空间,直到程序执行完才释放,使用的时候沿用上一次的那个值 在类中的static成员变量属于整个类所拥有,对类的所有对象只有一份拷贝; 在 阅读全文
posted @ 2022-04-09 13:56
纸包鱼
阅读(72)
评论(0)
推荐(0)
摘要:
代码区:存放所有代码的二进制 全局区,存放全局变量,静态变量,常量 栈区,编译器自动分配与释放,存放函数参数值和局部变量,随函数结束而释放 堆区,有程序员进行分配与释放,或者函数结束时自动释放 不同区域用于存放那个不同的数据,有不同的生命周期 在程序编写完,编译后,生成exe文件,这时已经出现两个区 阅读全文
posted @ 2022-04-09 13:52
纸包鱼
阅读(38)
评论(0)
推荐(0)
摘要:
c++中的rand()不需要参数,它会返回一个从0到最大随机数的任意整数,最大随机数的大小通常是固定的一个大整数。 一般性:rand() % (b-a+1)+ a ; 就表示 a~b 之间的一个随机整数 rand()的缺点:第一次运行这个程序产生的随机数,之后再运行程序的时候这个随机数不会变。为了每 阅读全文
posted @ 2022-04-09 10:52
纸包鱼
阅读(146)
评论(0)
推荐(0)
摘要:
数组本身并不支持拷贝和赋值,并且使用数组是通常将其转化成指针,在很多用到数组名字的地方,编译器都会自动地将其替换为一个指向数组首元素的指针 因为不能拷贝数组,所以我们无法以值传递的方式使用数组参数。因为数组会被转换成指针,所以当我们为函数传递一个数组时,实际上传递的是指向数组首元素的指针 void 阅读全文
posted @ 2022-04-09 10:50
纸包鱼
阅读(511)
评论(0)
推荐(0)
摘要:
string a = “adgg” string b = “gjug” a+=b【0】 a中的值为adggg 阅读全文
posted @ 2022-04-09 10:38
纸包鱼
阅读(104)
评论(0)
推荐(0)
摘要:
正常使用时和普通const是一样的,const 结构体名 结构体变量,结构体变量中的数据无法更改 阅读全文
posted @ 2022-04-09 10:28
纸包鱼
阅读(256)
评论(0)
推荐(0)
摘要:
和正常的参数一样传递,值传递,值传递中地址传递。效果也和正常参数一样 记一下指针引用为a->age,不需要使用* 因为形参的传递与转换是在调用拷贝函数,结构体可以进行拷贝,所以可以传递 阅读全文
posted @ 2022-04-09 10:20
纸包鱼
阅读(51)
评论(0)
推荐(0)

浙公网安备 33010602011771号