
c++语法
文章平均质量分 87
c++语言学习
遨游的laugh哥
CS
展开
-
STL标准模板库
容器适配器:封装了一些基本的容器,使之具备了新的函数功能,比如把deque封装一下变为一个具有stack功能的数据结构容器分类:sequence Containers:顺序容器Associative Containers:关联容器一般底层是:红黑树带了multi的意思是:key值可重复unordered Containers:底层是是基于哈希表实现的,每一个元素是一个key-value对: 其内部,容量不足(超过了阀值)时,同样会自动增长。哈希表最大的优点就是。原创 2024-09-16 01:56:04 · 1008 阅读 · 0 评论 -
函数指针和指针函数
指针函数:返回值是一个指针的函数函数指针:指向一个函数地址的指针。原创 2024-09-08 23:36:04 · 1091 阅读 · 0 评论 -
三种智能指针
new出来的必须delete,不然内存泄漏,会导致程序崩溃delete后的内存不能再次使用不要对同一个内存多次deletedelete p;*p = 300;//释放之后使用会出错,最好置成NULL//p=NULL;new和delete都是运算符,不是函数。new和delete相比于malloc和free可以干更多事—在堆上分配一个对象时,new和delete会自动调用类的构造和析构函数也就是存在初始化能力,malloc和free没有这个能力😄A a;sizeof(a);原创 2024-08-28 18:01:59 · 952 阅读 · 0 评论 -
基于赋值兼容的多态
甲乙丙三个班都是高二年级,他们有基本相同的属性和行为,在同时听到上课铃声的时候,他们会分别走向3个不同的教室,而不会走向同一个教室。和以前一样:构造时候调用自己构造函数前会调用基类构造函数,运行结束,程序会自动先析构派生类对象再析构基类对象。用派生类赋值基类,基类实现相同的虚函数接口,但是实现的是派生类覆写的功能。C++中的多态是指:由继承而产生的相关的不同的类,其对象对。虚函数是多态在运行时链接,但是内联函数是编译时候链接的。派生类的对象引用指针可以赋值给基类,但是基类只能访问。原创 2024-08-25 23:44:49 · 819 阅读 · 0 评论 -
Makefile简单使用
在含有Makefile文件下直接make就可以编译。这样增加了cpp文件连makefile都不用修改。每次-c都是链接成一个-o文件,最后把所有的。patsubst函数返回被替换过后的字符串。:显示指定路径下指定文件类型的所有文件。但是一般多文件都是用.o文件来链接的。链接在一起生成main。makefile编译。原创 2024-08-25 01:36:20 · 436 阅读 · 0 评论 -
右值引用+移动构造和赋值
在很多情况下会发生对象拷贝的现象,对象拷贝之后就被销毁了,在这种情况下,对象移动而非对象拷贝。 只有一个类没有自己的拷贝构造函数或拷贝赋值运算符,而且类的。这里这个临时对象就是隐式的,看不见,只是内部编译运行的逻辑是这样的。一般临时对象是看不见的,严格来说:obj并不算真正的临时对象。自己需要进行拷贝或者释放对象,系统默认要自己移动对象。,而且有些类都不能被共享资源,这些类型的对象**1个调用拷贝构造,1个调用移动构造,传参的区别。原创 2024-08-23 03:20:39 · 853 阅读 · 0 评论 -
c++ 继承
B继承A,C继承Bclass A{public:private:int x;//B继承Aclass B:public A{//公有继承public:showA();class C:public B{//公有继承public:showB();私有继承和保护继承都可以让派生类访问基类的非私有成员,但是私有继承会影响多次继承对基类的访问不管什么继承方式,派生类内部都不能访问基类的私有成员;不管什么继承方式,原创 2024-08-18 17:18:00 · 1084 阅读 · 0 评论 -
static+单例模式+类的复合继承
handle类包含handleImpl类的指针,handle类的notify()只是一个接口,真正的实现是:handleImpl类的notify(),如果采用简单的浅拷贝,则两类中的两个指针将指向同一个地址,当对象快结束时,会调用两次析构函数,而导致指针悬挂现象。所以这时必须采用深拷贝。在对象复制时,只对对象中的数据成员进行简单的赋值,默认拷贝构造函数执行的也是浅拷贝。隐藏了声明类A的对象,因为由于包含的原因,类B已经有类A的对象的声明了。既然是包含关系,那么大的字节数是它包含的类的字节数加上自己的成员。原创 2024-04-17 02:28:57 · 1054 阅读 · 0 评论 -
new;getline();重载<<和>>
返回值0在windows下编程一般没用,但是在中编程,返回值有时有用。原创 2024-03-09 01:57:10 · 1228 阅读 · 0 评论 -
字符数组+自定义string类+lambda+for_each//find_if
public://构造函数,带有默认参数0//拷贝构造函数:没有返回值,而且参数是本类对象的引用//拷贝赋值函数:重载运算符=,返回值类引用//返回类私用成员函数//析构函数private:char *cstr;按值捕获的外部变量,其值都是在lambda中之前的值auto m = [=]() -> string{//有返回值,()不可省//c100这里是5而不是10,因为5被赋值了改成&后,值是修改后的。原创 2024-02-27 18:15:51 · 890 阅读 · 0 评论 -
指针数组与数组指针
由于普通类型int,double没有指向首尾字符的指针,需要借助end(),begin()函数。然后定义一个类型为数组的指针指向它:int* (*parr)[]=&arr;动态数组区别于静态数组,其不具备begin(),end()操作。p)[m]=new int[n] [m] 这里:n就是。首先得存在一个元素类型是指针的数组:int* arr[]数组元素的类型 (*指针名)【】=&数组名。元素数据类型为 int* 的数组 int*[ ]首先: int (*p)[数组元素个数]=数组名。原创 2024-01-21 01:35:11 · 479 阅读 · 1 评论