
C++
文章平均质量分 91
特点封装继承多态 面向对象,泛型编程
看见代码就想敲
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
一、从零学习 C++
c++语法检查增强C++中所有的变量和函数必须有类型以上c代码c编译器编译可通过,c++编译器无法编译通过更严格的类型转换c++对结构体的增强1、c中定义结构体变量需要加上struct关键字,c++不需要2、c中的结构体只能定义成员变量,不能定义成员函数。c++即可以定义成员变量,也可以定义成员函数C语言:struct stu{ int num; char name[32];/* c语言 不允许在结构体中 定义成员函数 void func(void)转载 2021-04-06 17:22:09 · 467 阅读 · 0 评论 -
模板的超详细的案例讲解(上)
函数模板1、函数模板案例:2、用户指定T的类型3、函数模板 和 普通函数的区别案例:案例2:函数模板的调用时机4、函数模板的课堂练习5、函数模板具体化6、类模板7、类模板作为函数的参数(了解)8、类模板 派生 普通类c++提供了函数模板(functiontemplate.)所谓函数模板,实际上是建立一个通用函 数,其函数类型和形参类型不具体制定,用一个虚拟的类型来代表。这个通用函数 就成为函数模...原创 2020-03-26 21:38:23 · 845 阅读 · 0 评论 -
模板的超详细的案例讲解(下)
模板增强9、类模板成员函数 在类外实现10、类模板头文件 和源文件 分离问题11、类模板 与 友元(了解)12、类模板的综合案例9、类模板成员函数 在类外实现#include <iostream>#include<string>using namespace std;//严格来说;类模板的类型 不是Person 而是Person<T1,T2>tem...原创 2020-03-27 19:50:48 · 500 阅读 · 0 评论 -
this指针
this指针志不可一日坠,心不可一日放。c++的封装性:将数据 和 方法 封装在一起数据 和 方法 是分开存储。每个对象 拥有独立的数据.每个对象 共享同一个方法。1、this指针的引入class Data{public: int m_num; void setNum(int num) { m_num = num...原创 2020-03-20 10:45:46 · 339 阅读 · 1 评论 -
什么?多态还不懂, 赶快看这里。
多态是c++的最重要特征之一多态的分类:静态多态(静态联编)、动态多态(动态联编)静态多态(静态联编):函数入口地址 是在 编译阶段 确定(运算符重载、函数重载)动态多态(动态联编):函数入口地址 是在 运行阶段 确定(虚函数)原创 2020-03-25 21:39:19 · 381 阅读 · 0 评论 -
用vs studio查看继承的内层结构
案例class Base{public: int a;protected: int b;private: int c;};class Son :public Base{public: int d; int e;};int main(int argc, char* argv[]){ cout << sizeof(S...原创 2020-03-24 18:24:03 · 2210 阅读 · 0 评论 -
一看就懂的继承和派生
1、为什么需要继承继承的优点:减少代码的冗余 提高代码的重用性心灵纯洁的人,生活充满甜蜜和喜悦。.2、继承的格式派生类定义格式: class 派生类名 : 继承方式 基类名{ //派生类新增的数据成员和成员函数 }; class 子类: 继承方式 父类名{ //子类新增的数据成员和成员函数 };继承方式分...原创 2020-03-24 18:11:45 · 459 阅读 · 0 评论 -
一看就懂得友元函数
友元我命由我,不由天!c++允许 友元 访问 私有数据。友元的语法:friend关键字只出现在声明处 其他类、类成员函数、全局函数都可声明为友元 友元函数不是类的成员,不带this指针 友元函数可访问对象任意成员属性,包括私有属性。1、普通全局函数 作为 类的友元//房间类class Room{ //将goodGayVisit作为类的友元...原创 2020-03-20 20:09:19 · 217 阅读 · 0 评论 -
类中的静态成员变量和静态成员函数
static修饰的成员你想要的,岁月凭什么给你,所有逆袭,都是有备而来,所有光芒,需要时间才能被看到,所有幸运,都是努力埋下的伏笔。所以,你不努力谁也给不了你想要的生活。成员:成员变量 成员函数static 修饰成员变量 修饰成员函数static声明为静态的,称为静态成员。 不管这个类创建了多少个对象,静态成员只有一个拷贝,这个拷贝被所有属于这个类的对象共享。静...原创 2020-03-19 22:07:19 · 1718 阅读 · 0 评论 -
智能指针
目录 1. 初识智能指针 1.1 内存泄漏的原因分析 1.2 内存泄漏的解决方案 2. 智能指针类模板 2.1 智能指针的意义 2.2 STL 中的智能指针应用 2.3 QT 中的智能指针应用 2.4 智能指针模板类的实现 ...原创 2020-03-23 23:19:07 · 297 阅读 · 0 评论 -
类友元函数的练习
1、封装电视机的类class TV{ enum{ On,Off }; //电视状态 enum{ minVol,maxVol = 100 }; //音量从0到100 enum{ minChannel = 1,maxChannel = 255 }; //频道从1到255private: int mState; //电视状态,开机,还是关机 int mVo...原创 2020-03-20 20:19:33 · 381 阅读 · 0 评论 -
C++ 中的初始化列表
初始化列表也许你要早上七点起床,晚上十二点睡觉,日复一日,踽踽独行。但只要笃定而动情地活着,即使生不逢时,你人生最坏的结果,也只是大器晚成。构造函数和其他函数不同,除了有名字,参数列表,函数体之外还有初始化列表。 初始化列表简单使用:注意:初始化成员列表(参数列表)只能在构造函数使用class Data{private: int m_a; int...原创 2020-03-18 21:08:05 · 308 阅读 · 0 评论 -
const修饰的成员函数
const修饰成员函数用const修饰的成员函数时,const修饰this指针指向的内存区域,成员函数体内不可以修改本类中的任何普通成员变量, 当成员变量类型符前用mutable修饰时例外。#千锋物联网逆战班#世上只有想不通的人,没有走不通的路。int myFun(void) const //const修饰的是成员函数{}//函数内部不能修改 普通成员变量 mutable修饰时例...原创 2020-03-20 19:26:57 · 543 阅读 · 0 评论 -
运算符重载: 等于和不等于(==、!=)
等于和不等于(==、!=)//重载== ==出现在判断语句中 bool operator==(Person &ob) { if(strcmp(this->name, ob.name) == 0) { return true; } return false; } ...原创 2020-03-23 19:34:42 · 1391 阅读 · 0 评论 -
重载运算符 加号
方式1: 重载+运算符:全局函数作为友元 完成运算符重载+1+1 这种情况下 不需要重载 编译器能够计算案例两个对象相加#include <iostream>#include<string.h>using namespace std;class Person{ //设置成友元函数 在函数内 访问Person类中的所有数据 frie...原创 2020-03-21 21:04:44 · 371 阅读 · 0 评论 -
运算符重载: 函数调用符()的重载
案例#include <iostream>using namespace std;class Fun{public: int my_add(int x,int y) { return x+y; } //重载() //第一个()是重载的符号 第二个()是标明要传参 int operator()(int x,in...原创 2020-03-23 19:42:20 · 511 阅读 · 0 评论 -
运算符重载双做尖括号
运算符重载人在世上练,刀在石上磨1、重载运算符的概述运算符重载,就是对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型运算符重载的目的:简化操作 让已有的运算符 适应适应不同的数据类型。语法:函数的名字由关键字operator及其紧跟的运算符组成比如:重载+运算符 == > operator+ 重载=号运算 ==>operat...原创 2020-03-20 22:38:22 · 403 阅读 · 0 评论 -
一文说尽C++赋值运算符重载函数(operator=)
写在前面: 关于C++的赋值运算符重载函数(operator=),网络以及各种教材上都有很多介绍,但可惜的是,内容大多雷同且不全面。面对这一局面,在下在整合各种资源及融入个人理解的基础上,整理出一篇较为全面/详尽的文章,以飨读者。正文:#include<iostream>#include<...转载 2020-03-22 18:57:19 · 843 阅读 · 3 评论 -
运算符重载 不要重载&&、||
不要重载&&、||不能重载 operator&& 和 operator|| 的原因是,无法在这两种情况下实现内置操作符的完整语义。说得更具体一些,内置版本版本特殊之处在于:内置版本的&&和 ||首先计算左边的表达式,如果这完全能够决定结果,就无需计算右边的表达式了-而且能够保证不需要。我们都已经习惯这种方便的特性了。我们说操作符重载其实是另一种形式...原创 2020-03-21 21:30:41 · 297 阅读 · 0 评论 -
C++ 从堆区申请空间 new和delete
动态对象创建1、和malloc calloc realloc比较当我们创建数组的时候,总是需要提前预定数组的长度,然后编译器分配预定长度 的数组空间,在使用数组的时,会有这样的问题,数组也许空间太大了,浪费空 间,也许空间不足,所以对于数组来讲,如果能根据需要来分配空间大小再好不 过。 所以动态的意思意味着不确定性。 为了解决这个普遍的编程问题,在运行中 可以创建和销毁对象是最基本的要求。当然...原创 2020-03-19 21:48:15 · 3688 阅读 · 0 评论 -
什么是内联函数 inline
内联函数(inlinefunction)要好好努力然后多挣钱,才养得起自己这个爱吃的胃,爱玩儿的心,爱逛爱买的习惯,就算是一个人往一个人来,也能生活得很好。c++从c中继承的一个重要特征就是效率。假如c++的效率明显低于c的效率,那 么就会有很大的一批程序员不去使用c++了。 在c中我们经常把一些短并且执行 频繁的计算写成宏,而不是函数,这样做的理由是为了执行效率,宏可...原创 2020-03-18 22:36:16 · 1005 阅读 · 0 评论 -
C++函数重载
函数重载世上最好的保鲜就是不断进步,让自己成为一个更好和更值得爱的人。函数重载:同一个函数名在不同场景下可以具有不同的含义。函数重载意义:方便的使用函数名。函数重载的条件: 同一个作用域 参数个数不同 参数类型不同*参数顺序不同(重要)void myFunc(int a){ cout<<"int的myFunc"<<en...原创 2020-03-17 22:57:44 · 296 阅读 · 0 评论 -
C++ 最通俗易懂的构造和析构函数讲解
构造和析构函数的概述有一种努力叫做靠自己,没有人能成为你永远的避风港,你才是自己人生路上唯一的导航灯,你想要的人生,只有你自己给得起。构造函数和析构函数,这两个函数将会被编译器自动调用,构造函数完成对象的初始化动作,析构函数在对象结束的时候完成清理工作。注意:对象的初始化和清理工作是编译器强制我们要做的事情,即使你不提供初始化操作和清理操作,编译器也会给你增加默认的操...原创 2020-03-18 20:41:26 · 605 阅读 · 0 评论 -
C++ 中你不知道的引用
引用我们总以为,是生活欠我们一个“满意”,其实是我们欠生活一个“努力”。1、给已有变量取个别名int num = 10;int &a = num;//此处 &不是取地址 而是标明 a是引用变量(a 是 num的别名)注意:1、引用必须初始化2、引用一旦初始化 就不能再次修改别名int num = 10;int &a = num;...原创 2020-03-16 19:53:14 · 206 阅读 · 0 评论 -
C++命名空间 namespace的详细讲解
命名空间 namespace人生重要的不是所站的位置,而是所朝的方向;1、::作用域运算符(表明 数据、方法 的归属性问题)using namespace std;int a = 10;//全局变量void test01(){ int a = 20;//局部变量 cout<<"局部变量a = "<<a<<endl;...原创 2020-03-13 21:36:03 · 9143 阅读 · 4 评论 -
超详细的继承和派生讲解
1、继承中的构造和析构的顺序总结:2、子类中 有父类、对象成员 构造和析构的顺序总结:(重要)3、详解 子类中的构造案例提高:4、父类和子类的同名 成员变量 处理4.1、当 父类和子类 成员变量同名时 在子类就近原则 选择本作用域的子类成员4.2、如果在子类中 必须使用父类中的同名成员 必须加上父类的作用域。4.3、子类可以借助 父类的公有方法 间接的操作 父类的私有数据(不可见的数据)5、父类和子类的同名 成员函数 处理原创 2020-03-24 19:21:51 · 1864 阅读 · 0 评论 -
C++中STL常用算法
STL的常用算法1、常用的遍历算法1、for_each:遍历容器元素2、transform算法 将指定容器区间元素搬运到另一容器中2、常用的查找算法2.1、find算法 查找元素2、find_if条件查找2.3、adjacent_find算法 查找相邻重复元素2.4、binary_search算法 二分查找法(容器必须有序)2.5、count算法 统计元素出现次数2.6、count_if算法 统计...原创 2020-04-02 21:40:31 · 1418 阅读 · 0 评论 -
STL(什么是函数适配器)
函数适配器函数适配器: 扩展函数的参数接口(假如函数有一个参数 再扩展一个接口 据可以传递两个参数)函数适配器案例案例:bind2nd 或bind1st区别bind2nd:讲外界数据 绑定到第二个参数bind1st:讲外界数据 绑定到第一个参数取反适配器(not1一元取反)not1一元取反not2二元取反注意:binary_function 二元继承unary_function 一元继承案例2...原创 2020-04-02 19:36:58 · 740 阅读 · 0 评论 -
STL中的内建函数对象(一看就懂)
什么是内建函数对象答: STL提供的仿函数STL内建了一些函数对象。分为:算数类函数对象,关系运算类函数对象,逻辑运算 类仿函数。这些仿函数所产生的对象,用法和一般函数完全相同,当然我们还可以 产生无名的临时对象来履行函数功能。使用内建函数对象,需要引入头文件原创 2020-04-01 23:35:50 · 574 阅读 · 0 评论 -
STL(什么叫谓词)
返回值类型为bool的普通函数或仿函数 就叫谓词。如果普通函数或仿函数 有一个参数 就叫一元谓词。如果普通函数或仿函数 有二个参数 就叫二元谓词。谓词是指普通函数或重载的operator()返回值是bool类型的函数对象(仿函数)。如 果operator接受一个参数,那么叫做一元谓词,如果接受两个参数,那么叫做二元 谓词,谓词可作为一个判断式。原创 2020-04-01 21:06:03 · 399 阅读 · 0 评论 -
STL(标准模板库) 各种容器的使用时机
STL 容器使用时机vector的使用场景:deque的使用场景:vector与deque的比较:list的使用场景:set的使用场景:map的使用场景:vector的使用场景:比如软件历史操作记录的存储,我们经常要查看历史记录,比 如上一次的记录,上上次的记录,但却不会去删除记录,因为记录是事实的描 述。deque的使用场景:比如排队购票系统,对排队者的存储可以采用deque, 支持头...原创 2020-04-01 20:33:55 · 344 阅读 · 0 评论 -
STL(标准模板库)-map容器
map与multimap容器map容器的特点:1、所有元素都会根据元素的键值自动排序2、所有的元素都是pair,同时拥有键值和实值。第一个参数:键值 第二个参数:实值3、map容器的键值唯一不可变 实值 可变。map容器的API案例1:map容器的插入、遍历案例2:map和vector容器配合使用(重要)multimap容器Multimap和map的操作类似,唯一区别multimap键值可...原创 2020-04-01 20:05:29 · 430 阅读 · 0 评论 -
STL(标准模板库)-set容器
所有元素都会根据元素的键值自动被排序。set的元素即是键值又是实值。set容器的键值 不允许相同。set容器提供的是只读迭代器(不允许用户修改元素的内容)原创 2020-04-01 00:09:33 · 443 阅读 · 0 评论 -
STL(标准模板库)-list容器 和 stack容器,queue容器
stack容器 是栈容器: 先进后出的数据结构。push入栈、pop出栈、top永远指向栈顶元素stack没有迭代器queue容器 是队列容器: 队列容器:先进先出 队尾插入数据 对头删除数据queue容器:没有迭代器 不具备遍历功能 只能通过front、back访问原创 2020-03-31 23:44:21 · 796 阅读 · 0 评论 -
STL(标准模板库)-deque容器
deque容器 双端动态数组deque容器和vector容器最大的差异:1、deque容器的构造 和赋值2、deque容器的大小操作、双端插入删除操作、元素访问操作3、容器的插入删除4、案例:有5名选手:选手ABCDE,10个评委分别对每一名选手打分,去除最高分,去除评委中最低分,取平均分,最后输出每位选手的分数5、srand设置随机种子 rand 产生随机数deque容器和vector容器...原创 2020-03-31 23:05:17 · 251 阅读 · 0 评论 -
STL(标准模板库)-vector容器
vector容器(单端动态数组)1、vector容器的概述2、vector的容量capacity和大小szie的区别(了解)3、vector的未雨绸缪机制(了解)4、vector的构造函数5、vector赋值与交换语句案例:赋值交换6、vector大小操作案例:案例2:resize 作用的容器的大小 不会更改容器的容量1、vector容器的概述vector容器的迭代器 :随机访问迭代器随机...原创 2020-03-31 22:18:19 · 722 阅读 · 0 评论 -
STL(标准模板库)-string 容器
1、string 容器基本概念C风格字符串(以空字符结尾的字符数组)太过复杂难于掌握,不适合大程序的开 发,所以C++标准库定义了一种string类,定义在头文件。 String和c风格字符串对比: uChar是一个指针,String是一个类 string封装了char , 管 理 这 个 字 符 串 , 是 一 个 char 型的容器。u String封装了很多实用的成员方法查 找find,拷...原创 2020-03-31 19:59:43 · 248 阅读 · 0 评论 -
STL(标准模板库)初步了解
STL1、STL的概述1.1、STL的三大组件:容器(container) 算法(algorithm) 迭代器(iterator)。1.2、STL:六大组件:容器 算法 迭代器 仿函数 适配器 空间配置器1.3、算法的分类:质变算法 和 非质变算法1.4、迭代器的分类:2、迭代器案例:容器vector#include < algorithm>//标准模版库(STL)vector...原创 2020-03-30 22:46:16 · 419 阅读 · 0 评论 -
多态 进阶(虚析构,纯虚函数,纯虚析构)
虚函数 纯虚函数 虚析构 纯虚析构(重要)重写 重载 重定义(了解)原创 2020-03-26 21:13:59 · 3382 阅读 · 3 评论 -
C++异常的处理机制
异常1、异常的概述常见的异常:除0溢出,数组下标越界,所要读取的文件不存在,空指针,内存不足等等。c++的异常一旦抛出 如果不捕获 该异常 程序直接退出1.1、C语言通过返回值 来判断 第一:容易忽略 第二:容易和正常的结果混淆1.2、c++抛出异常 并捕获c++的异常一旦抛出 如果不捕获 该异常 程序直接退出抛出异常:throw捕获异常:try......catch2、栈解旋(unwin...原创 2020-03-29 17:00:15 · 1174 阅读 · 0 评论