
c++
文章平均质量分 84
勤奋的懒羊羊~
少年有梦,不应止于心动
展开
-
C++11(第一篇)【C/C++复习版】
左值是一个数据的表达式(如变量名或解引用的指针),我们可以获取它的地址,一般可以对它赋值,只有左值可以出现在赋值符号的左边,右值不行。左值引用就是对左值的引用,给左值取别名,左值引用的符号是&。左值引用的使用价值:减少拷贝1、做参数 2、做返回值但左值引用一直没有解决的问题是局部变量无法通过左值引用返回。右值不能取地址,一般是在赋值符号右边,但不能出现在赋值符号左边。对右值取别名就是右值引用,右值引用的符号是&&。内置类型的右值叫纯右值,自定义类型的右值叫将亡值下面两个函数构成重载吗?原创 2024-04-25 11:10:30 · 1166 阅读 · 0 评论 -
多态【C/C++复习版】
重写(覆盖)是指在派生类中有一个跟基类返回值,函数名,形参列表相同(缺省参数除外)的虚函数。重写时,只是重写函数体的部分,函数头用的是父类的,也就是说,如果有的话,缺省参数也是用的父类的。派生类重写时,可以不加virtual。虚函数返回值不同时,必须满足协变。协变的返回值可以不同,但协变的返回值必须是父子关系(不一定是当前的父子类,可以是任意别的父子类)的指针或引用(同时是指针或同时是引用)。原创 2024-04-11 23:59:59 · 797 阅读 · 0 评论 -
继承【C/C++复习版】
当多个类之间有许多共同的方法或属性时,可以将这些方法和属性提取出来作为一个父类,让子类通过继承父类来进行代码的复用,同时,子类也可以在父类的基础上做一些扩展。class 派生类名:继承方式(public/protected/private) 基类名public:int _n;在继承体系中基类和派生类的作用域是独立的,如果在基类和派生类中出现了同名成员,子类将屏蔽父类同名成员,直接访问自己的,这就叫隐藏。如果是成员函数,只要。原创 2024-04-11 16:08:18 · 1090 阅读 · 0 评论 -
C++输入&输出、缺省参数、函数重载【C++初阶】
早起标准库将所有功能在全局域中实现,声明在.h后缀的文件中,使用时只需要包含对应的头文件即可,后来将其实现在std命名空间下,为了和C头文件区分,也为了正确使用命名空间,规定C++头文件不带.h;C语言在编译后,函数名字的修饰并没有改变,而C++在编译后,函数名字的修饰发生了改变,编译器将函数的参数类型信息添加到了名字中。缺省参数就是在函数声明时(没有声明就在定义时)给函数参数一个缺省值,在调用该函数时,若没有指定实参则采用该形参的缺省值。举个例子,现有两个函数,分别名为Add和func。原创 2023-04-16 20:41:05 · 942 阅读 · 1 评论 -
继承【C/C++】
class 子类名 : 访问修饰符 父类名 {// 子类的成员和方法。原创 2023-10-24 16:33:01 · 200 阅读 · 0 评论 -
模板和STL【C++初阶】
以前我们写swap函数时,对每一种类型的变量都要写一份swap函数,但是他们的格式都是一样的,未免有些麻烦因此,我们今天学习的模板就可以针对广泛的类型而不是具体的类型,帮我们节省工作。left=right;right=temp;left=right;right=temp;left=right;right=temp;原创 2023-05-21 08:32:30 · 477 阅读 · 0 评论 -
C/C++内存管理
delete p2;return 0;new/delete和malloc/free最大的区别是new/delete对于【自定义类型】处理开空间还会调用构造函数和析构函数在申请自定义类型的空间时,new会调用构造函数,delete会调用析构函数,而malloc与free不会:_a(a)A(int a):_a(a):_a(a)原创 2023-05-16 15:09:35 · 757 阅读 · 0 评论 -
类和对象【C++】【下篇】
二、隐式类型转换 三、静态成员 四、友元五、内部类 六、匿名对象原创 2023-05-12 20:31:58 · 521 阅读 · 0 评论 -
类和对象【C++】【中篇】
C++为了增强代码的可读性引入了运算符重载,运算符重载是具有特殊函数名的函数,也具有其返回值类型,函数名字以及参数列表,其返回值类型与参数列表与普通的函数类似。拷贝构造函数:是特殊的成员函数,只有单个形参,该形参是对本类类型对象的引用(一般用const修饰),在用已存在的类类型对象创建新对象时由编译器自动调用。析构函数:是特殊的成员函数。与构造函数功能相反,析构函数不是完成对对象本身的销毁,局部对象的销毁工作是由编译器完成的。d3赋值给了d2后,应该有一个返回值,而我们上面写的函数的返回值是空。原创 2023-05-09 13:19:48 · 644 阅读 · 1 评论 -
类和对象(上篇)【C++】
C++将C语言里的里的结构体升级成了类,在C++中,结构体不仅可以定义变量,还可以定义函数。我们在数据结构里写的栈就可以把初始化,入栈,出栈等函数都放到结构体里。但是,C++更喜欢将其写成类。//类体:由成员函数和成员变量构成//注意有分号class为关键字,classname为类名,{}中为类的主体,注意有分号。1、将声明和定义都放在类体中。int* _age;2、将类的声明放.h文件中,将类定义放.cpp文件中(推荐)。原创 2023-05-01 22:00:49 · 1079 阅读 · 0 评论 -
内联函数\nullptr【C++初阶】
在学习内联函数前,我们先回顾一下宏。将下面的函数改为宏函数应该怎么改呢?可见,宏函数有其优势,如不用调用栈帧,提高调用效率等,但也有许多缺点,如可读性差,不可调试、没有类型安全的检查等。因此,C++中增加了内联函数,可以很好地解决宏的大部分缺点,接下来我们就来学习一下内联函数的相关知识。原创 2023-04-27 08:16:44 · 731 阅读 · 1 评论 -
auto【C++初阶】
随着程序越来越复杂,程序中的有些类型也越来越复杂,不易拼写,容易写错。这时候,我们可以用之前提过的typedef,但是typedef也有一些不可忽视的问题。如:1、在使用typedef定义别名时,别名应该清晰地显示变量的具体类型。2、在使用 typedef 定义别名时,避免给它取与标准库或操作系统有关的名称,以避免名称冲突。但是,auto可以很好地解决这些问题。一、auto简介auto声明的变量必须由编译器在编译器在编译时期推导而得。注意。原创 2023-04-26 14:36:24 · 496 阅读 · 0 评论 -
引用【C++初阶】
以值作为参数或返回值类型,在传参和返回期间,函数不会直接传递实参或者将变量本身直接返回,而是传递实参或者返回变量的一份临时拷贝,因此用值作为参数或者返回值类型,效率是非常低下的,尤其当参数或者返回类型非常大时,效率就更低。函数返回时,出了函数作用域,如果返回对象还在(还没还给操作系统)则可以使用引用返回,如果已经还给操作系统了,则必须使用传值返回。引用不是新定义一个变量,而是给已存在的变量取一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用一块内存空间。(1)引用必须初始化,指针没有要求。原创 2023-04-19 15:21:21 · 462 阅读 · 1 评论 -
一文搞懂using namespace std【命名空间】【C++初阶】
在C语言学习中,我们如果定义了一个变量的名字跟头文件中的某个函数冲突了,编译器就会报错;一些变量,函数和类都存在于全局变量中,可能会导致很多冲突,为了解决这个问题,cpp就引入了命名空间(namespace)这个概念。一、命名空间的定义使用命名空间的目的是对标识符的名称进行本地化,以免命名冲突或名字污染。一个命名空间就定义了一个新的作用域,命名空间中所有内容都局限在该命名空间中。定义: namespace(关键字)+命名空间的名字+{命名空间的成员}int val;注意:命名空间可以嵌套定义。原创 2023-04-15 14:52:08 · 2148 阅读 · 2 评论