C++基础学习
文章平均质量分 73
记录了基础阶段的学习内容
-特立独行的猪-
这个作者很懒,什么都没留下…
展开
-
C++基础(一)——底层分析
01 进程的虚拟地址空间一、操作系统让进程访问的是虚拟地址空间,而不是物理地址1.任何程序在编译时都会产生指令和数据,进行地址编号,但是如果地址不连续,就会程序运行不起来,编译器的地址管理比较麻烦(无法动态的获知物理空间的使用情况,也就无法为数据进行编号)2.进程直接访问物理地址,如果此时有一个野指针,那么在进行操作野指针的时候可能会改变其他空间的数据,造成不安全的事件发生(无法进行内存访问控制)3.程序运行空间通常需要一块连续的空间,空间利用率低,通过虚拟地址空间映射到物理内存上进行数据存储,可以原创 2022-04-29 14:07:45 · 1515 阅读 · 0 评论 -
C++基础(二)——基本语法
01 带形参默认值的函数===>形参带默认值的函数1.给默认值的时候,从右向左给2.调用效率的问题3.定义出可以给形参默认值,声明也可以给形参默认值4.形参给默认值的时候,不管是定义处给,还是声明处给,形参默认值只能出现一次#include<iostream>using namespace std;int sum(int a, int b = 20);//若为 int sum(int a = 10, int b) 会报错 默认从右向左给int sum(int a =原创 2022-05-01 15:02:01 · 1005 阅读 · 0 评论 -
C++基础(三)——面向对象
01 类和对象、this指针C++ OOP面向对象 OOP编程,this指针C: 各种各样的函数的定义 structC++:类 => 实体的抽象类型实体(属性、行为) -> ADT(abstract data type)| |对象 <-(实例化) 类(属性->成员变量 行为->成员方法)OOP语言的四大特征是什么?抽象 封装/隐藏 继承 多态类 -》 商品实体访问限定符:public公有的 pr原创 2022-05-06 14:08:25 · 129 阅读 · 0 评论 -
C++基础(四)——模板
01 函数模板模板的意义:对类型也可以进行参数化了int sum(int a, int b){return a+b;}函数模板 <= 是不进行编译的,因为类型还不知道模板的实例化 <= 函数调用点进行实例化模板函数 <= 才是要被编译器所编译的模板类型参数 typename/class模板非类型参数模板的实参推演 => 可以根据用户传入的实参的类型,来推导出模板类型参数的具体类型模板的特例化(专用化) 特殊(不是编译器提供的,而是用户提供的)的实例化函数模板、原创 2022-05-09 21:25:39 · 301 阅读 · 0 评论 -
C++基础(六)——继承和多态
01 继承的基本意义继承的本质:a.代码的复用b.类和类之间的关系:组合:a part of… …一部分的关系继承:a kind of… …一种的关系继承方式 基类的访问限定 派生类的访问限定 (main)外部的访问限定public public public Y protected protected N private 不可见的 Nprotected原创 2022-05-11 22:23:38 · 195 阅读 · 0 评论 -
C++基础(七)——多重继承
01 虚基类和虚继承多重继承 :代码的复用 一个派生类有多个基类class C: public A, public B{};抽象类(有纯虚函数的类) / 虚基类 被虚继承的类称作虚基类 vbptr和vbtablevirtual1.修饰成员方法是虚函数2.可以修饰继承方式,是虚继承。被虚继承的类,称作虚基类class A{public: virtual void func() { cout << "call A::func" << endl; } void原创 2022-05-11 22:24:02 · 492 阅读 · 0 评论 -
C++基础(八)——STL六大组件
01 vector容器vector:向量容器底层数据结构:动态开辟的数组扩容方式:每次以原来空间大小的2倍进行扩容vector<int> vec; //声明方式增加:vec.push_back(20); 末尾添加元素 O(1) 导致容器扩容vec.insert(it, 20); it迭代器指向的位置添加一个元素20 O(n) 导致容器扩容删除:vec.pop_back(); 末尾删除元素 O(1)vec.erase(it); 删除it迭代器指向的元素 O(n)查询:原创 2022-04-11 15:21:17 · 1952 阅读 · 0 评论