![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
文章平均质量分 81
和善小张
这个作者很懒,什么都没留下…
展开
-
多态的基本原理和使用
多态的概念、定义以及实现多种形态,当不同的对象去执行同一种行为时,产生的不同表现形态构成多态三个条件(同时满足,缺一不可):在不同的继承关系的类对象,去调用同一函数,产生了不同的行为必须在继承的框架下实现(前提是继承)必须通过基类的指针或者引用调用虚函数,即都为切片行为被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行重写虚函数的重写:重写函数逻辑构成虚函数的重写条件:子类含有和父类借口完全相同的函数–>返回值,函数名,参数完全相同(例外:协变,析构函数重写)不满足条件但原创 2021-07-19 21:44:16 · 842 阅读 · 0 评论 -
什么是继承
继承概念类级别的代码复用继承方式:public、protected、privateprotectde访问权限/private访问权限: protected —> 在当前类和子类中可见,在其他地方不可见 private —> 在当前类中可见,在其他地方不可见父类成员在子类中的访问权限:min { 成员在父类中的原始访问权限,继承方式 }一般都是public继承,protected/private继承很少使用/几乎不用默认继承方式: cla原创 2021-07-18 20:50:48 · 88 阅读 · 0 评论 -
栈、队列、优先队列和容器适配器
stack的基本使用#include<stack>stack<int> st;st.push(1);st.push(2);st.push(3);while(!st.empty()){ cout << st.top() << " "; st.pop();}cout << endl;queue的基本使用#include<queue>queue<int> q;q.push();while(!q原创 2021-07-14 23:29:02 · 99 阅读 · 0 评论 -
list的基本使用
list的基本使用list本质为双向带头循环列表list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。list的底层是双向带头循环链表,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。与其他的序列式容器相比(array,vector,deque),list通常在任意位置进行插入、移除元素的执行效率更好。与其他序列式容器相比,list和forward_list最大的缺陷是不支持任意位置的随机访问,比如:要访问list原创 2021-07-14 18:38:21 · 412 阅读 · 0 评论 -
vector的基本使用和实现
vector的基本使用vector<int> v;vector<char> v2;vector<string> v3;vector<int> v4(10, 5);//10个5string s2 = "0123456789";vector<char> v5(s2.begin(), s2.end());vector<char> v6(v5);vector的遍历string s = "0123456789";vec原创 2021-07-14 13:40:29 · 191 阅读 · 0 评论 -
string类的基本使用及常用接口
string类基本使用#include <string>void test(){ string str;//"" string str2("123");//"123" string str3 = "abc";//"abc" string str4("0123456789", 5);//"01234" string cpy(str3);//"abc" string str5(str4, 2, 2);//"23" 从str4的第2个位置拿两个字符创建一个字符串原创 2021-07-02 22:05:40 · 185 阅读 · 0 评论 -
C++模板
泛型编程编写与类型无关的通用代码。template <typename / class 泛型参数1, typename / class 泛型参数2 ...... >告诉编译器一个模板,让编译器根据不同的类型利用该模板生成代码模板实例化:用实际参数类型,生成可执行的函数。泛型编程并没有减少实际的代码量,只是把重复的代码交给机器自动生成。减少开发人员的重复工作量,提高工作效率,增加幸福感。函数模版template <class T>void Swap(T& l原创 2021-07-02 21:41:37 · 110 阅读 · 0 评论 -
c++中的内存管理
C/C++内存分布栈:非静态局部变量,函数参数,返回值等,栈是向下增长的内存映射段:装载一个共享的动态内存库堆:用于程序运行时动态内存分配,可以向上增长数据段:存储全局变量和静态数据代码段:可执行的代码、只读常量C语言中内存管理方式malloc:只进行空间申请,不进行初始化。calloc:进行空间申请+零初始化。realloc:第一个参数为nullptr/NULL,功能等价于malloc。int* ptr=(int*)realloc(nullptr, sizeoff(int));原创 2021-07-02 12:10:03 · 146 阅读 · 0 评论 -
C++ static、友元、内部类
再谈构造函数初始化列表:成员(初始化值/表达式),成员2()…每一个初始化变量只能在初始化列表中出现一次。对象的成员变量定义的地方:初始化列表。如果有引用成员,const成员,没有默认构造函数的自定义成员,必须在初始化列表中进行初始化。其他成员可以不进行显示初始化。class Time{public: Time(int a) { _a = a; }private: int _a;};class Date{public: Date(int y = 1, i原创 2021-06-29 17:32:24 · 135 阅读 · 0 评论 -
C++基础
命名空间对标识符的名称进行本地化,以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的`namespacs dog//命名空间为dog{void print(int a){printf(" %d \n", a);}int a;int b;//可定义变量,也可定义函数namespace big_dog//可以嵌套{void fun1(int a){printf("%d\n", a);int a;int b;}}}在这里插入代码片`...原创 2021-06-23 00:53:19 · 110 阅读 · 0 评论 -
c++类与对象与this指针
类的定义c++struct:可以定义数据和函数,一般使用class。c++定义类的方式struct Student{ void display() { } void setId(int id) { _id = id } char name[10]; int _id;};class Student{//成员函数public://共有成员在任何地方可用 void display() { } void setId(int id) {原创 2021-06-23 20:32:49 · 121 阅读 · 0 评论 -
C++六大成员函数
类的 6 个默认成员函数初始化和清理:构造函数主要完成初始化工作析构函数主要完成清理工作拷贝复制:拷贝构造是使用同类对象初始化创建对象复制重载主要是把一个对象赋值给另一个对象取地址重载:主要是普通对象和const对象取地址,这两个很少会自己实现构造函数构造函数:函数名和类名相同,无返回值,可重载,编译器在创建时自动调动在已经存在的空间上进行一个成员的初始化,并且初始化是自动进行的,当我们创建一个对象的时候编译器自动调用构造函数。声明一个函数,不会调用无参构造默认构造(只能存原创 2021-06-27 20:29:01 · 811 阅读 · 0 评论