C++
文章平均质量分 51
bingma03
学生
展开
-
C++ 中重载、重写(覆盖)、重定义(隐藏)的区别
(1)重载重载是指在同一个作用域内,两个函数的函数名可以相同,但是参数不能完全相同可以是参数类型不同,也可以是参数个数不同,返回值不影响重载,即不同返回值的函数,其他都相同则不能重载重载的实现原理:编译器在编译函数时,会根据函数名以及参数类型和个数对函数重命名int fun(int a) { return a;}void fun(int a, int b) { // 函数重载 cout << a*b << endl;}(2)重写,也叫覆盖重写是指在继原创 2021-03-18 22:04:12 · 376 阅读 · 0 评论 -
C++ 中基类成员函数的隐藏机制
在C++类的继承中,声明在内层作用域(派生类)的函数并不会重载声明在外层作用域(基类)的函数。因此,定义在派生类中的函数也不会重载基类中的成员。如果派生类和基类中的某个成员重名,则派生类将在其作用域内隐藏该基类成员。即使派生类成员列表和基类成员列表不一致,基类成员也依然被隐藏。struct Base { int f1();};struct Child : Base { int f1(int a); // 隐藏基类的f1()};// 调用Base b; Child c;b.f1();原创 2021-01-13 15:45:20 · 1361 阅读 · 0 评论 -
C++类中的访问控制权限(public、protected、private)
C++中每个类控制着自己的成员初始化过程,同时还分别控制着其成员对于派生类来时是否可访问。C++中继承中的访问权限如下表所示:publicprotectedprivate公有继承(public)publicprotected不可见保护继承(protected)protectedprotected不可见私有继承(private)privateprivate不可见1. 公有继承派生类公有继承自基类,则基类中的public和protected在派生类原创 2021-01-13 15:16:37 · 1825 阅读 · 0 评论 -
C++ 中纯虚函数与抽象基类
1. 纯虚函数定义纯虚函数是在基类中声明的一个虚函数,它在基类中没有定义,但要求所有继承该基类的派生类都要实现该方法。声明方式:虚函数后面加上 “=0”class A{ virtual void f1() = 0; // 纯虚函数,无需定义,只需声明};2. 纯虚函数与虚函数的不同点基类中的虚函数,在派生类中不一定要重写该方法;纯虚函数要求在派生类中必须实现各自的方法纯虚函数不能在基类中定义含有纯虚函数的类为抽象类,抽象类不能创建自己的对象,只能创建它的派生类的对象3. 为什么原创 2021-01-13 14:35:47 · 983 阅读 · 0 评论 -
C++ 虚函数讲解
虚函数表示使用virtual关键字修饰的函数,一般使用在类中的成员函数上。那么我们为何要使用虚函数呢?针对这个问题,我们可以先跟大家介绍一下多态。多态多态是面向对象的三大特征之一,所谓多态,就是指“多种形态”,即对同一接口的不同表现形式。比如动物这个类别,可能表现为狗,也可能表现为猫等等。多态分为:静态多态和动态多态静态多态静态多态也叫早绑定,是编译时多态,在编译的后就已经确定了需要调用的函数,如果不存在,则出现编译错误。静态多态主要有两种实现方式:函数重载(普通函数的重载和成员函数重载)、函数原创 2021-01-12 19:12:20 · 665 阅读 · 3 评论 -
C++ explicit关键字用法详解
隐式类类型转换:在C++语言中,类中的构造函数如果只含有一个参数,默认情况下存在一种隐式转换,即定义了转换为此类类型的隐式转换机制。然而,这种机制并非总是合理的,甚至容易产生错误,因此,新标准增加了explicit关键字,用来限制隐式转换。下面的示例是隐式转换的机制class Test {public: Test(); // 空构造函数 Test(double a); // 含一个参数的构造函数 Test(int a, int b); // 含两个参数的构造函数 T原创 2021-01-08 17:25:36 · 4544 阅读 · 0 评论 -
C++智能指针的使用-unique_ptr详解
介绍:unique_ptr拥有他所指向的对象某个时刻只能有一个unique_ptr指向一个给定的对象当unique_ptr被销毁时,它所指向的对象也被销毁定义一个unique_ptr时,需要将其绑定到一个new返回的指针上unique_ptr不支持普通的拷贝和赋值操作,但可以通过release()和reset()方法将指针的所有权转移给另一个unique_ptr1. unique_ptr操作操作说明unique_ptr< T> u1创建一个空的uniqu原创 2021-01-06 21:06:04 · 5563 阅读 · 0 评论 -
C++智能指针的使用-shared_ptr详解
介绍:shared_ptr允许多个指针指向同一个对象,对象内存的释放交由智能指针自动释放。shared_ptr维护者一个关联计数器,称为引用计数当对一个shared_ptr进行拷贝时,引用计数会加1;当对一个shared_ptr赋予一个新值或shared_ptr被销毁(局部的智能指针变量被销毁)时,引用计数减1当引用计数为0时,会自动调用delete或自定义内存释放函数释放内存引入头文件:#include< memory>1. 默认构造方式shared_ptr< T&g原创 2020-12-23 19:16:27 · 3746 阅读 · 0 评论 -
C++智能指针的使用
动态内存:c++中,动态内存的管理是通过一对操作符来完成的:new- 用来为对象分配空间,并返回一个指向该对象的指针delete- 接受一个动态对象的指针,销毁该对象,并释放与之关联的内存(指针本身的地址并没有改变)动态内存管理容易出问题,需要程序员手动释放内存。为了更容易使用动态内存,c++11新标准提出了两种智能指针:shared_ptr 和 unique_ptr。智能指针的操作类似于普通指针,最主要的区别是它还负责自动释放所其指向的对象两种智能指针:shared_ptr: 允许多个指原创 2020-12-23 18:57:23 · 336 阅读 · 0 评论 -
c++ set和multiset的使用
c++ 中set的使用和multiset的使用原创 2020-12-22 11:56:13 · 294 阅读 · 0 评论 -
c++ 关联容器-map和multimap容器
1. 介绍#includemap存储的是关键字-值对(key-value);提供基于key的快速检测能力。map中key是唯一的,集合根据key值进行排序(< 的比较方式)map中存储的key值的类型,默认使用 小于的比较方式(升序);如果是保存自定义的类型,需要传入自定义的比较规则函数map是由红黑树变体的平衡二叉树的数据结构实现的可以使用 [] 操作符访问key对应的valuemap的key是const类型的,不能对其修改multimap与map的区别:map的key是唯一原创 2020-12-21 21:23:10 · 365 阅读 · 0 评论 -
c++ pair类型详解
1. 介绍pair是标准库类型,它定义在utility头文件中,一个pair保存两个数据成员。创建一个pair类型数据时,必须提供两个类型名,表示数据成员对应的类型。pair的数据成员是public的,两个成员分别命名为first 和second2. pair的操作操作解释pair<T1, T2> p;p是pair类型,采用默认初始化的方式,其中T1和T2表示两个数据成员的类型pair<T1, T2> p(v1, v2);p是pair类原创 2020-12-21 20:00:25 · 2908 阅读 · 0 评论 -
c++ 关联容器-map、set、multimap、multiset、unordered_map、unordered_set
标准库提供了8个关联容器,其中有序容器有:map、set、multimap、multiset; 无序容器有:unordered_map、unordered_set、unordered_multimap、unordered_multiset原创 2020-12-21 17:51:12 · 348 阅读 · 0 评论 -
C++ list容器详解
c++中的lsit容器适一个双向链表容器,插入、删除高效,但是不能随机存取元素。原创 2020-12-18 11:49:01 · 539 阅读 · 0 评论 -
C++11 参数绑定-bind函数用法
使用bind()对参数进行绑定,功能类似于lambda表达式原创 2020-12-12 16:03:58 · 1720 阅读 · 0 评论 -
C++ lambda表达式详细讲解2-隐式捕获与显式捕获
lambda表达式的隐式捕获、显式捕获、值捕获、引用捕获原创 2020-12-10 11:40:34 · 3393 阅读 · 0 评论 -
C++ lambda表达式详细讲解1
lambda表达式的隐式捕获与显示捕获:https://blog.csdn.net/readyone/article/details/1109487701. lambda表达式介绍一个lambda表达式表示一个可以调用的代码单元,可以将其理解为一个未命名的内联函数。lambda表示式的形式如下: [capture list] (parameter list) -> return type {function body} 参数说明:capture list:捕获列表,由于lamb.原创 2020-12-08 16:12:17 · 474 阅读 · 0 评论 -
C++顺序容器-deque双端队列容器
c++中deque容器的基本操作:插入、删除、赋值、初始化、存取原创 2020-12-07 15:42:06 · 339 阅读 · 0 评论 -
C++顺序容器与容器适配器
顺序容器介绍,包含:vector、string、deque双端数组、list、array、forward_list;容器适配器介绍:queue、stack、priority_queue原创 2020-12-07 11:36:31 · 317 阅读 · 0 评论 -
C++ 顺序容器-string容器的基本操作
本文介绍了string容器的常用操作,包括初始化、字符串赋值、string拼接、string比较、string求子串、string查找与替换、string删除与插入、string字符串比较原创 2020-12-07 11:31:44 · 351 阅读 · 0 评论 -
C++顺序容器-vector基本操作(遍历、迭代器)
C++中vector的基本操作,empty()、size()、push_back()、bengin()、end()、cbegin()、cend()原创 2020-12-05 19:01:01 · 1931 阅读 · 0 评论 -
Linux-用户管理命令-创建用户(useradd)、删除用户(userdel)、usermod
这里写目录标题用户管理、多用户管理添加用户用户切换用户删除用户组管理Linux中ID查看用户信息修改用户信息(usermod)(某些需要重新登录生效)用户管理、多用户管理添加用户符号作用sudo useradd username添加用户名sudo useradd -m username添加用户名,并为其创建home目录sudo useradd -g usergroup username添加用户名到某个用户组sudo passwd username为用户设置原创 2020-12-01 22:04:48 · 848 阅读 · 0 评论