C++
文章平均质量分 72
C++知识点+C++解题
new出新对象
星光不负赶路人,时光不负有心人。
展开
-
模板进阶【C++】
模板参数分类类型形参与非类型形参。类型形参即:出现在模板参数列表中,跟在class或者typename之类的参数类型名称。非类型形参,就是用一个常量作为类(函数)模板的一个参数,在类(函数)模板中可将该参数当成常量来使用。原创 2024-04-26 17:33:20 · 344 阅读 · 0 评论 -
【C++】深层次了解继承,从基础概念到复杂菱形继承问题(文章结尾有菱形继承常见面试题)
定义格式以学生(Student)类为例,继承Person类;Person类是父类,也称作基类;Student是子类,也称作派生类。三种继承方式和三种访问限定符子类的三种继承方式:public、protected、private父类中三种访问限定符:public、protected、private(1).父类中的public成员,公有继承public:int _age;{};s1.name = "阿飞";s1.show();原创 2023-07-21 11:13:03 · 124 阅读 · 11 评论 -
new/delete和malloc/free的区别
在C/C++面试中,两种区别是经常被问到的,第一个是指针和引用的区别;第二个就是我们文章题目所提到的-new/delete和malloc/free的区别。想要回答出来这类问题,首先要清楚他们的使用,下面我们以new/malloc如何使用为例,来更好的理解这类问题。2.malloc申请空间之后返回的是一个void。原创 2023-07-10 11:25:59 · 210 阅读 · 0 评论 -
C++中的类型转换
static_cast、reinterpret_cast、const_cast、dynamic_cast原创 2023-03-09 08:39:36 · 326 阅读 · 5 评论 -
【C++】仿函数、lambda表达式、包装器
一般而 言,我们用它可以把一个原本接收N个参数的函数fn,通过绑定一些参数,返回一个接收M个参数的新函数。arg_list中的参数可能包含形如_n的名字,其中n是一个整数,这些参数是“占位符”,表示。象中参数的位置:_1为newCallable的第一个参数,_2为第二个参数,以此类推。C++中有sort函数,实现在algorithm中,库中的sort函数默认是升序的;仿函数就是类中的成员函数,这个成员函数可以让对象模仿函数调用的行为。函数重载的显示调用、重载的隐式调用、类名()仿函数调用。原创 2023-02-26 14:21:35 · 622 阅读 · 2 评论 -
【C++】类和对象
/成员变量+成员函数C中虽然可以使用struct来定义类,但是C用户更偏向于使用class来定义类。1.声明和定义全放在类中像我们前面写的Stack类,声明和定义都在class Stack{}中完成。成员函数在类内定义,如果符合inline的条件,编译器会将其当做内联函数处理。2.声明和定义分离//f.hint val;private://f.cpp{}{}在f.cpp中,注意限定类域(如果不写类域,无法找到对应的声明);原创 2023-02-23 20:02:12 · 304 阅读 · 7 评论 -
【C++】智能指针
使用指针的时候在遇到异常的时候可能导致函数中的释放语句未执行,但是面向对象中的类却不用考虑这种情况,因为实例化出的对象出了作用域会自动调用析构函数释放空间。C++11中又出现了几种智能指针,像unique_ptr是不支持拷贝的,shared_ptr则是使用计数的方法来防止空间的多次释放。SmartPtr并未考虑拷贝的问题,auto_ptr考虑到了拷贝的问题,只不过拷贝的方法有点像是在抢劫(所以基本上都不用它)。实际上,auto_ptr在拷贝的时候实现了资源的转移,转移之后被拷贝的对象就不能再被使用。原创 2023-02-19 20:45:49 · 390 阅读 · 0 评论 -
【C++】string类常用函数接口
这在反向迭代器中其实也是有的,在C++标准库中既有一般的迭代器,也有const迭代器,const迭代器就是适合const对象使用的;第三个参数是拷贝的字符个数,默认的是npos;npos是一个无符号的-1,补码为全1,是一个非常大的数,也就是说如果我们不传拷贝的长度的话,那么就是从拷贝位置开始,知道字符串结束。s.begin()返回的是第一个字符的位置,s.end()返回的是最后一个字符的下一个位置,所以可以通过s.begin()、s.end()对string对象进行遍历。是不能修改的,只能进行访问。原创 2022-12-27 11:52:41 · 581 阅读 · 4 评论 -
【C++】泛型编程 _函数模板和类模板的基本使用
如何实现一个通用的交换函数?这在C语言中是无法实现的,但是C++却可以。使用函数重载虽然可以实现,但是有一些问题:只要交换的类型不同,就需要增加对应的函数;重载的函数只是类型不同,代码复用率比较低;代码可维护性较低,一个函数出错所有重载都会出错。解决这些问题的简单方法就是使用泛型编程。像古代的活字印刷术,只要有了一个模板,就可以反复的造轮子;C++中的模板可以分为函数模板和类模板。原创 2022-12-19 16:26:02 · 479 阅读 · 9 评论 -
【C++】string类 _模拟实现 _源码[复习专用]
string类 _ 模拟实现 _源码原创 2022-11-04 20:07:17 · 134 阅读 · 1 评论 -
【C++】类和对象 _初始化列表 &必须使用初始化列表的三种情况【进阶篇 _复习专用】
内置类型可以在函数体中进行初始化,也可以使用初始化列表定义初始化;上面的三种情况只能使用初始化列表定义初始化;能使用初始化列表的话尽量使用初始化列表。原创 2022-10-29 22:50:38 · 794 阅读 · 10 评论 -
【C++】多态 - 为C++增容添彩 _ 多态实例_【内附代码和图片】_[进阶篇_复习专用]
被调用的函数是虚函数,而且子类对虚函数进行重写父类的指针/引用调用虚函数上面提到了虚函数重写,下面来谈一谈什么是虚函数?虚函数:成员函数的前面加上virtual关键字。(必须是成员函数,写在全局函数前面会报错)思维导图2.final修饰类,表示该类不能被继承。原创 2022-10-23 10:13:25 · 746 阅读 · 8 评论 -
【C++】类和对象基础 _[初阶篇 _复习专用]
1.2 C++中的struct在C++中,兼容了C语言中使用struct定义结构体的语法,而且新增加了一种用法:使用struct定义类。struct在C++和C语言中的不同点:C语言定义的结构体中只能出现变量; C++定义的类中可以出现函数。1.3 classC++中可以使用struct定义类,也可以使用class来定义类,这两种定义方式也有区别:struct定义的默认成员时公有的; class定义的默认成员时私有的。提到公有、私有,就不得不谈一谈访问限定符了。原创 2022-10-17 19:34:37 · 1510 阅读 · 68 评论 -
【C++】基础内容,带你快速入门C++
不能在声明和定义中同时存在。创建两个文件stack.h和stack.cpp,其中在stack.h中放函数stack_init的声明,在stack.cpp中放函数定义。int top;};//声明{}1.声明和定义中同时存在:传参的时候可以不传capacity,默认给的值就是声明中capacity的缺省值。定义时由缺省值,声明中没有;原创 2022-10-13 08:00:00 · 692 阅读 · 9 评论