
C++
Your_Julia
这个作者很懒,什么都没留下…
展开
-
C++——STL容器用法汇总
STL用法汇总原创 2024-07-01 09:52:36 · 385 阅读 · 0 评论 -
C++——多态与虚函数的理解
一、问题多态的作用?当父类指针指向子类对象时,会根据虚函数表调用子类的虚函数重写的作用?当父类指针指向子类对象时,由于指针类型为父类,调用的依旧是父类的非虚函数当子类指针指向子类对象时,由于指针类型为子类,调用的是子类的非虚函数二、代码验证class Base{public: Base() { } void function() { cout << "base: not virtual" << endl; }原创 2021-09-23 18:48:31 · 200 阅读 · 0 评论 -
C++——关于构造函数与析构函数能否调用虚函数的问题
一、代码class A {public: A() { cout << "A construction." << endl;; virfun(); }; virtual ~A() { cout << "A disconstruction." << endl; virfun(); }; virtual void virfun() { cout原创 2021-09-14 09:11:07 · 335 阅读 · 0 评论 -
C++——智能指针auto_ptr、unique_ptr、share_ptr、weak_ptr
auto_ptr相对于普通指针分配内存,需要自己new and delete,若不delete,就会造成内存泄露。auto_ptr智能指针可以做到,指针失效时自动回收内存空间。该指针可以进行复制构造与赋值构造,所以可能造成两个(或多个)指针指向同一内存空间的情况,导致内存空间被释放两次(或多次),造成错误。unique_ptr为了改进auto_ptr的漏洞,unique_ptr智能指针不允许复制构造与赋值构造,也即编程开始便约束了指针无法指向同个空间,避免内存空间被多次释放的错误。但unique_p原创 2021-07-21 17:52:40 · 379 阅读 · 3 评论 -
C++——STL(string)
常用函数与功能函数功能begin()开头迭代器end()结尾迭代器size()/length()字符串大小/长度capacity()字符串容量insert()指定位置插入erase()指定位置删除empth()字符串是否为空swap()两字符串交换clear()字符串清空代码#include <iostream>#include <string>using namespace std;原创 2021-06-20 09:09:10 · 90 阅读 · 0 评论 -
C++——异常处理
定义异常处理是C++提供的一种捕获和处理程序错误的结构化机制。异常的常见例子有:使用new运算符无法取得所需内存、数值下标超界、运算溢出、除数为0及函数的无效参数等。发生异常后,控制不会返回异常抛出点,而由程序执行相应catch块,然后跳过所有后续catch块,恢复执行。注意C++的异常出来的基本思想是将异常检测与处理分离。C++的异常处理是一直不唤醒机制,程序将在异常处理模块执行处理代码后继续执行。抛出异常后,调用链上的所有模块都将终止执行,称为不唤醒。C++的异常处理是由程序员控制的,只能处原创 2021-06-17 08:59:10 · 499 阅读 · 0 评论 -
C++——基本数据与表达式
源程序执行步骤:编辑:cpp 文本文件编译:cpp->exe执行 VC.NET 用文件夹管理应用程序标识符语法:以字母或下划线开始,由字母、数字、和下划线组成的字符串不能使用关键字作为用户标识符字母大小写敏感没有规定标识符的长度,不同编译系统有不同的识别长度数据类型类型包含基本类型整型 int bool enum浮点型 float double字符型 char结构类型数组[]结构struct联合union原创 2021-06-17 07:46:51 · 105 阅读 · 0 评论 -
C++——输入流/输出流
I/O系统的任务就是在内存和外部设备之间稳定可靠地传输数据和解释数据。流类库streambuf提供对缓冲区的低级操作,ios提供流的高级I/O操作ios派生了两个类,输入流类istream和输出流类ostream基类派生类功能streambuffilebuf提供文件缓冲区的管理strstreambuf使用字符串保存字符序列,提供在内存中提取和插入操作的缓冲区管理stdiobuf提供标准I/O文件的缓冲区管理istreamifstream文件原创 2021-06-17 07:10:49 · 666 阅读 · 0 评论 -
C++——模板
定义这些模板运算对象的类型不是实际的数据类型,而是一种参数化的类型,带类属参数的函数称为函数模板,带类属参数的类称为类模板。函数模板(而模板函数为函数模板的实例化)template <typename T>T Max(const T a,const T b){ return a>b?a:b; }重载函数模板(C++编译器将根据调用的参数类型和个数选择可用于实例化的函数模板)template <typename T>T Max(const T *a,int原创 2021-06-16 09:53:49 · 166 阅读 · 0 评论 -
C++——虚函数与多态性
定义多态性是指一个名字,多种语义,重载函数是多态性的一种简单形式;虚函数为向类提供的一种灵活的多态机制,允许函数调用与函数体在运行时才进行联系,成为动态联编;联编类型类型说明静态联编指程序之间的匹配、连接在编译阶段,即程序运行之前完成,也称早期匹配动态联编指程序联编推迟带运行时进行,又称为晚期联编;switch语句就是一个例子类指针的关系方式权限直接用基类指针引用基类对象安全直接用派生类指针引用派生类对象安全用基类指针引用原创 2021-06-15 16:13:13 · 158 阅读 · 0 评论 -
C++——继承
定义继承机制使用已经定义的类作为基础建立新的类的定义,新的类是原有类的数据及操作与新类所增加的数据及操作的组合。新的类把原有的类作为基类引用,而不需要修改原来的类的定义。继承格式class默认访问控制为privateclass 派生类名:访问控制 基类名表{ 数据成员和成员函数的说明};继承方式方式说明公有继承访问权限不变私有继承访问权限变为私有保护继承访问权限变为保护重名成员#include<iostream>using na原创 2021-06-15 09:59:30 · 135 阅读 · 0 评论 -
C++——运算符重载
不可重载的运算符. .* :: ?: sizeof重载运算符的规则不改变运算符的优先级不改变运算符的结合性不改变运算符所需要的操作数不能创建新的运算符,只有系统预定义的运算符才能被重载重载运算符的格式类型 类名::operator op(参数){ //相对于该类定义的操作}用成员重载运算符(有this指针)//类的定义class TriCoor{ public: TriCoor(int mx=0,int my=0,int mz=0); TriCoor ope原创 2021-06-15 08:41:16 · 170 阅读 · 1 评论 -
C++——类与对象
基础知识· 类是在结构的基础上发展而来的;· 在过程化程序设计中,程序的基本单位是函数;· 在面向对象程序设计中,程序的基本单位是类;· 类与结构差别在于,类缺省的访问权限为private,结构缺省的访问权限为public;访问权限访问特性说明private私有成员只能在类中可见,不能在类外或派生类中使用protected保护成员在类和它的派生类中可见public公有成员是类的结构,在类中和类外可见构造函数和析构函数· 构造函数名与类名相同,构造函数原创 2021-06-14 16:12:50 · 79 阅读 · 0 评论 -
C++——集合与结构
位运算运算符说明&按位与l按位或^按位异或<<左移>>右移~按位取反· 两次异或运算,不回改变原理的值集合运算运算(默认A为左操作数)说明并集A和B全部元素交集A和B共同元素差属于A但不属于B包含A中所有元素在B中补集全集不在中的所有元素属于x在A中空集集合中没有元素使用位运算实现集合运算集合运算对应的位运算原创 2021-06-14 15:00:47 · 233 阅读 · 0 评论 -
C++——数组
数组由一定数目的同类元素顺序排列而成的结构类型数据一个数组在内存中占有一片连续的存储区域,数组名就是这块存储空间的地址数组的每个元素都用下标变量标识动态存储int *p=new int;//动态分配一个整型单元delete p;//释放存储空间p=NULL;//清楚无意义的地址值...原创 2021-06-14 09:17:38 · 131 阅读 · 0 评论 -
C++——函数
cmath常用的数学函数原型函数原型说明int abs(int n)n的绝对值double cos(double x)x的余弦double sin(double x)x的正弦double tan(double x)x的正切double exp(double x)指数函数e^2double fabs()doublexx的绝对值double fmod(double x,double y)x/y的浮点余数double log(doubl原创 2021-06-14 08:54:21 · 95 阅读 · 0 评论 -
C++——STL(容器适配器)
容器适配器类型备注stack后进先出queue先进先出priority_queue值大先出代码(stack)#include<iostream>#include<stack>using namespace std;int main() { //声明 stack<int> mystack1({ 1,2,3,4,5 }); stack<int> mystack2;原创 2021-05-13 16:46:48 · 149 阅读 · 0 评论 -
C++——STL(无序容器)
无序容器底层实现结构:哈希表 冲突解决方法为链地址法 快速查找(使用哈希函数)名称备注unordered_map键值不相等;不可重复;无序;unordered_multimap可重复;unordered_set键值相等;不可重复;有序;不可修改;unordered_multiset可重复;代码(unordered_map)#include<iostream>#include<unordered_map>#include原创 2021-05-13 15:56:18 · 278 阅读 · 0 评论 -
C++——STL(关联容器)
关联容器名称备注map键值不相等;不可重复;有序;multimap可重复set键值相等;不可重复;有序;不可修改;multiset可重复代码(map)#include<iostream>#include<map>#include<string>using namespace std;int main() { //声明 map<string, int> mymap; ma原创 2021-05-11 17:10:06 · 94 阅读 · 0 评论 -
C+++——STL(序列容器)
序列式容器类型备注array增加了成员函数begin() end() at()与全局函数get()等;不可增删,固定大小;vector默认尾删增deque头尾删增list双向链表forwart_list前向链表代码:(array)#include<iostream>#include<array>using namespace std;int main() { array<int, 5> n原创 2021-05-11 15:33:55 · 220 阅读 · 0 评论