
C++
文章平均质量分 59
语法总结
看到请催我学习
这个作者很懒,什么都没留下…
展开
-
C++智能指针
因为用new从堆区分配内存给类对象时,需要手动delete释放内存,而我们有时候会忘记delete,导致内存无法释放针对这种情况,C++11推出了新的智能指针,智能指针会自动完成内存释放的操作。原创 2023-09-19 23:08:44 · 53 阅读 · 0 评论 -
C++匿名函数lambda
lambda函数是C++11新增的语法,也称为lambda表达式或匿名函数原创 2023-09-14 17:46:20 · 94 阅读 · 0 评论 -
C++11新增关键字
auto,override,final,nullptr,constexpr,decltype,noexcept原创 2023-09-13 18:25:15 · 247 阅读 · 0 评论 -
C++异常处理 try catch throw
mark一下,看上面这篇就够了。原创 2023-09-12 21:36:28 · 65 阅读 · 0 评论 -
C++泛型编程
什么是泛型编程?简单说泛型编程就是使用一种通用类型来进行程序设计的方法,这个方法可以大规模的减少程序代码的编写量函数模板,类模板都属于是泛型编程,他们都使用了一种数据类型TT是一个数据类型占位符,也可以把T当作一种数据类型,即,使用这个占位符的编程方式即是泛型编程。原创 2023-09-11 23:55:57 · 184 阅读 · 0 评论 -
C++STL标准模板库容器
array,vector,string,list,forward_list,map,multimap,set,multiset,deque,queue,priority_queue,unordered_map,unordered_ multimap,unordered_set,unordered_multiset原创 2023-09-04 23:27:30 · 97 阅读 · 0 评论 -
C++静态变量和静态函数
声明时需要加static,定义时不用静态变量属于类,不属于对象;内存分配在全局函数区静态变量可以通过对象访问,也可以通过类名访问,都遵守类的访问权限。原创 2023-09-03 22:21:17 · 130 阅读 · 0 评论 -
C++函数重载和函数重写
也叫隐藏,子类重新定义父类中有相同名称的函数 ( 不包括虚函数重写 )必须发生在不同的作用域中(基类与派生类中)返回值可以不同;参数列表不同,优先调用子类函数(可通过::作用域分辨符访问父类函数)参数列表相同,优先调用子类函数(可通过::作用域分辨符访问父类函数)原创 2023-09-02 23:18:01 · 164 阅读 · 0 评论 -
C++关键字inline,explicit,mutable,volatile
inline关键字作用是将为了避免经常调用短函数消耗栈内存,将函数设为内联函数,在使用的时候将是直接运行函数体内的代码而不是调用函数定义在类中的函数都默认为内联函数inline必须和函数定义放在一起,放在声明则无效inline只适合函数体短的函数。原创 2023-09-01 23:07:56 · 130 阅读 · 0 评论 -
C++移动构造函数和移动赋值函数
在移动构造函数和移动赋值函数之前,我们已经知道了拷贝构造函数(将对象当作参数传入,在函数体内进行浅拷贝或者深拷贝以完成数据的拷贝复制)和赋值函数(重载运算符,操作和拷贝构造函数差不多)这里引入右值的概念,和先前左值是相对应的。原创 2023-08-30 23:50:42 · 197 阅读 · 0 评论 -
C++类模板的友元函数
该方法将函数单独拿出来写作一种函数模板,声明函数模板并写在模板类之前,然后在模板类中设为友元,将类模板对象当作函数参数传入,在类外对函数模板进行定义。:模板类实例化时,如果实例化了n个类,也会实例化n个友元函数,每个实例化的类都拥有n个友元函数。1)非模板友元:友元函数不是模板函数,而是利用模板类参数生成的函数。2)约束模板友元:模板类实例化时,每个实例化的类对应一个友元函数。:友元函数不是模板函数,而是利用模板类参数生成的函数。:模板类实例化时,每个实例化的类对应一个友元函数。友元函数之间是重载关系。原创 2023-07-13 22:36:04 · 371 阅读 · 1 评论 -
C++类模板
类模板与函数模板相比,函数模板的模板参数不是必要的主要用于类型转换,函数模板的数据类型已在模板中指明;而类模板的模板参数是必须的用于生成对象时数据类型的指定,类模板创建对象时必须在中指定数据类型,且指定的数据类型不与代码冲突。使用类模板的时候,指定具体的数据类型,让编译器生成该类型的类定义。在模板类中使用了的函数才会创建,没使用的函数即使代码有错也不会出错。是通用类的描述,使用任意类型(泛型)来描述类的定义。可以在类外定义模板类的成员函数,本文章主要回顾的知识点有:模板类。原创 2023-07-10 23:11:50 · 89 阅读 · 1 评论 -
C++函数模板
函数模板是通用的函数描述,在编译的时候编译器根据实参的数据类型和函数模板,生成该类型的函数定义,生成函数定义的过程被称为实例化。现在学了的函数类型大概有以下几种:普通函数,普通函数的重载,函数模板,函数模板的重载,具体化函数模板。具体化与普通的模板不同在于模板参数为空,函数名参数列表需与模板相同,参数类型需具体化。:普通函数=普通函数的重载>具体化函数模板>函数模板=函数模板的重载。如果希望调用函数模板而不是普通函数,就在函数名后加空模板参数本文章主要回顾的知识点有:函数模板,具体化函数模板。原创 2023-07-09 23:43:23 · 66 阅读 · 1 评论 -
C++多继承与虚函数,多态
错误的原因是基类指针无法调用派生类函数,所以在删除对象时无法调用派生类的析构函数,在基类析构函数前加virtual编译器将使用派生类的析构函数,并在之后自动调用基类的析构函数,达成想要的效果,也是虚函数的应用之一。多态的内存情况:如果基类中定义了虚函数则基类的内存中的虚函数被虚函数指针和虚函数表代替,虚函数指针指向虚函数表,虚函数表中存放虚函数的地址和名称(基类中普通的成员函数的地址是静态的,存放在二进制文件中)多态也分为静态多态和动态多态,静态多态指的是编译时已确定函数的地址,主要有函数重载和函数模板。原创 2023-07-07 23:51:06 · 173 阅读 · 1 评论 -
C++继承
public继承(基类中的public变子类中的public,基类中的protected变子类中的protected,private不继承,但是可以通过public或protected间接访问)可以通过基类的公有成员函数间接访问基类的私有成员,使用 using 关键字可以改变基类成员在派生类中的访问权限(public:using A::fun3)补充前面文章中提到的三种继承方式:public公有的,protected保护的,private私有的。被继承的类称为基类或父类,继承的类称为派生类或子类。原创 2023-07-04 22:52:02 · 92 阅读 · 0 评论 -
C++转换函数和类型转换
转换函数分为隐式转换和显式转换两种;隐式转换,不指明使用哪个函数,系统根据左边数据类型自动调用函数(代码中a),显式转换则指明转换使用的转换函数,除此之外,类型转换还可以使用普通函数完成类型转换,设置一个带返回值的函数,即可完成从类类型到某个具体类型的转换。加explicit关键字将取消隐式转换,隐式转换时将无法调用转换函数。:operator 数据类型() ,完成从类类型到某种类型的转换;转换函数必须是成员函数,不能指定返回值类型,不能有参数。本文章主要回顾的知识点有:转换函数,隐式显式转换。原创 2023-07-03 23:44:33 · 191 阅读 · 1 评论 -
C++内存池
提前分配一片内存给内存池,需要使用内存时借用内存池的内存,使用后归还给内存池;在重载的运算符new中,如果标志位(0,9)为零则分配内存给标志位的下一位(1,10),内存地址加一,并将标志位置为1,表示内存池的这片内存已被使用;在重载的运算符delete中,如果传入的地址是标志位的后一位(1,10),则将标志位置为0,清空内存,申请大小为18的内存,取两位(0,9)为标志位,1为内存已占用,0为未占用,可以存放4个整形数据;内存池按顺序使用,哪里有空用哪里,除非内存池已满,不然不会申请系统内存。原创 2023-07-03 00:14:57 · 109 阅读 · 1 评论 -
C++重载运算符
free()函数:void free (void *ptr) 释放之前调用 calloc、malloc 或 realloc 所分配的内存空间。malloc()函数:void *malloc(size_t size) 分配所需的内存空间,并返回一个指向它的指针。运算符重载函数的语法:返回值 operator要重载的运算符(参数列表),而不是在main函数中的位置,运算符可以重载多次(改变参数列表)本文章主要回顾的知识点:重载运算符,malloc函数,free函数。运算符重载既可以是成员函数也可以是全局函数。原创 2023-07-01 22:28:26 · 104 阅读 · 0 评论 -
C++友元friend
友元成员函数比前一个复杂一点,在类内函数想要调用其他类的数据的时候,将函数在类中声明但不定义,在其他类中声明为友元,然后在类外进行定义,就可以通过友元成员函数调用其他类的所有数据了(通过类对象调用)。:简单说就是在类内将函数声明并设为友元(私有公有都可以),在类外进行定义,就可以当作普通函数一样调用友元全局函数,访问类内的数据。在通过类的公有函数访问私有变量的方法外,提供了另一种访问私有变量的方法。在想要调用的类中将类声明为友元类,类中的函数就可以调用其他类的所有函数或者变量(通过类对象调用)原创 2023-06-29 22:12:25 · 78 阅读 · 0 评论 -
C++静态static关键字和const关键字
值得一提的是,加了static关键字后的变量不能在类内初始化,会引发报错,只能在类外进行初始化;可以在构造函数内进行赋值操作(进行赋值操作后对象的数据将与最后一个对象的数据保持一致,如例子中的对象p1,p2数据都将是哥哥,18)经验证,非const函数可以调用含const的变量/函数和非const的变量/函数,const函数也可以调用含const的变量/函数和非const的变量/函数。,只能通过对象名调用(即在函数列表传入对象,再通过对象调用数据),static不初始化会报错(无法解析外部命令)原创 2023-06-29 00:48:13 · 144 阅读 · 0 评论 -
C++深拷贝和浅拷贝
(拷贝构造函数即括号内存在形参的构造函数,构造对象时或函数以值方式返回对象时调用)people(string ju),变量ju将赋值给变量juzi,然后创建zhongjian对象时将对象xiaoming作为实参传入,将调用people(people&dx)拷贝构造函数,zhongjian对象juzi的值将和xiaoming的相等。不难看出,浅拷贝的时候,旧对象的指针地址和新对象的指针地址是一样的,当新对象指针指向的内容发生改变时,旧对象的内容也会发生对应的变化。原创 2023-06-28 01:35:16 · 128 阅读 · 1 评论 -
C++结构体和类
在这里我们简单知道,类范围内数据是可以互相访问的无论是否private,在类外就无法直接访问private的数据,但是可以通过间接的方法,例如代码中的getweight()成员函数,通过成员函数间接访问私有变量。当结构体内数据有指针时,用&取地址符使指针指向特定数据,例如代码中的指针q,指向字符串qq,后面通过。首先可以看到结构体的结构是:struct 结构体名 {},括号内可以是各种类型的数据(int,double,char...),可以是其他结构体的数据,也可以是。:类名 类对象=类名(实参列表)原创 2023-06-25 14:31:57 · 78 阅读 · 0 评论 -
C++中嵌套类对象无法初始化的问题
首先解释嵌套类是什么?一个类可以定义在另一个类里面,那么这个定义在另一个类内的类就叫做嵌套类。嵌套类的对象在另一个类中作为成员存在,定义在类内的模板类也是同理。以平常的编程习惯去看,代码看似没有问题,但是程序却出错了,问题就在于类内使用()会被当作函数,也就是说编译器将我们创建的嵌套类对象当成了函数。在写嵌套类的代码的时候偶然发现嵌套类对象使用一般的方法无法完成初始化的情况,经过网上查找资料和大佬指点,现已解决该问题。,手工赋值也能避免这种错误的发生。原创 2023-05-03 17:29:32 · 278 阅读 · 1 评论