c++
文章平均质量分 85
c++语法
UtoCoo
有幸成为长河的一粒沙
展开
-
C++多态
下面程序输出结果是什么class Apublic:public:p->test();return 0;答案是:解释:子类继承了虚函数,但是没有重写,p->test是普通调用。到了test函数内部,调用func,func函数是虚函数且子类对其重写,满足多态条件1。func();this是A*还是B*?答案是A*,因为test()的第一个形参是默认的。原创 2024-04-04 10:29:53 · 886 阅读 · 0 评论 -
C++继承
1.冗余的部分只存了一份,在所有成员的最下面(vs是这样设计的),B和C中除了存自己的成员变量之外,还存了一个指针,该指针指向的内存空间中,有一个数值,如图这里是0c,这个值是什么意思呢?继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。Person叫做基类,或者父类。在C++设计出菱形继承后,C++的语法犹如当头一棒,因此,在后来的面向对象的语言中,比如java,没有设计多继承。原创 2024-03-24 23:46:59 · 90 阅读 · 0 评论 -
C++模板扩展
我们知道,模板一般是不指定类型的,具体是什么类型由其他部分的代码的决定。模板参数分为类型模板参数和非类型模板参数。类型形参即:出现在模板参数列表中,跟在class或者typename之后的参数类型名称。非类型形参:就是用一个常量作为类(函数)模板的一个参数,在类(函数)模板中可将该参数当成常量来使用。浮点数、类对象以及字符串是不允许作为非类型模板参数的。C++20目前似乎支持。原创 2024-03-10 20:31:33 · 399 阅读 · 0 评论 -
STL——queue
仔细想一想,仿函数本质也是调用一个函数,这个函数是operator(),但是并不是直接调用,而是用类对其封装,符合面向对象的特点,也便于模板传参。deque是一个容器,名叫双端队列,它具有list和vector的两种特性,可以理解为list&&vector,方便头插头删,尾插尾删,不方便下标访问。元素从特定容器的“尾部”弹出,其称为优先队列的顶部。但是不方便,函数指针指向一个函数,那么指向的这个函数必须由我们来传参,且语法繁琐,不推荐使用回调函数,并且指针也有很多不安全的问题,推荐使用C++的仿函数。原创 2024-03-03 21:32:05 · 848 阅读 · 0 评论 -
STL——stack
1. stack是一种专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。2. stack是作为容器适配器被实现的,并提供一组特定的成员函数来访问其元素,将特定类作为其底层的,元素特定容器的尾部(即栈顶)被压入和弹出。3. stack的底层容器可以是任何标准的容器类模板或者一些其他特定的容器类,这些容器类应该支持以下操作:empty:判空操作back:获取尾部元素操作push_back:尾部插入元素操作pop_back:尾部删除元素操作。原创 2024-03-03 20:45:48 · 185 阅读 · 0 评论 -
STL——list
STL中的list容器是 双向循环链表,且带头。原创 2024-02-26 21:15:57 · 352 阅读 · 0 评论 -
STL——vector
关于vector的概念等这篇文章不再说明,我们来聊一聊关于和vector相关的问题。原创 2024-02-02 22:59:40 · 214 阅读 · 0 评论 -
字符串相加
这里提一下怎么插入字符串,由于加法的规则,每次得到的结果是尾部的数据,所以,需要不断的头插来保证字符的顺序正确,但是头插需要挪动数据(string底层是顺序表),所以效率大打折扣,可以通过尾插O(1)来,然后逆置字符串来替代这种算法。要处理字符串相加,大致想法是,按照加法对齐,将单个字符用整型表示,相加后将结果分解为进位0或1和某个数字,然后将该数字用字符形式存进字符串。需要把end1和end2指向的字符转化为数字(减字符0),然后相加,结果是一个整型。按照加法对齐,用双指针的形式来遍历相加。原创 2023-12-19 18:43:20 · 428 阅读 · 0 评论 -
STL——string
c语言中,字符串是以‘\0’结尾的字符的集合,为了方便操作,C标准库中提供了一系列str函数,但是这些库函数与字符串是分离开的,不符合OOP思想,并且底层空间由用户自己管理,容易出现各种内存问题。原创 2023-12-13 19:47:35 · 778 阅读 · 0 评论 -
关于类和对象
在C++中更喜欢用class来代替struct,这便引入了class。原创 2023-10-25 20:44:37 · 52 阅读 · 0 评论 -
C++ 到底++了什么
/ 命名空间中可以定义变量/函数/类型int val;//一个命名空间就定义了一个新的作用域,命名空间中的所有内容都局限于该命名空间中命名空间可以嵌套//2. 命名空间可以嵌套int a;int b;int c;int d;//3. 同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中。// ps:一个工程中的test.h和上面test.cpp中两个N1会被合并成一个// test.h。原创 2023-10-19 17:14:14 · 43 阅读 · 0 评论