S4: C++ (抽象和接口)
文章平均质量分 61
C++11是一种全新的语言(兼容C),主要优势在于封装继承多态模板。并且每隔几年发布新版本,不断在变化
静思心远
嵌入式&&人工智能
展开
-
CPP基础学习
CPP基础学习C++ 学习网址C引入C++C++ 重载 引用 友元抽象封装继承多态模板(STL)C++11特性智能指针C++ 学习网址CPP 学习 https://www.cplusplus.com/reference/C++入门教程面向对象思想C引入C++C++struct继承structC++ 重载 引用 友元函数重载抽象C++ 抽象封装C++封装继承多态模板(STL)STL简单例子Stack_STLC++11特性智能指针C++ 智能指针 s原创 2021-10-07 18:16:25 · 605 阅读 · 0 评论 -
1.C++输入输出
instance analysis1: 进制输出#include <iostream>#include <iomanip>#include <bitset>using namespace std;int main(){ int i = 32; cout<<i<<endl; cout<<"dec:"<<dec<<i<<endl; //10 进制输出 co原创 2020-08-19 22:42:06 · 243 阅读 · 0 评论 -
C++ resize和reverse修改容器大小
在C++编程中,resize和reserve是两个经常被用到的容器操作,它们分别用于动态数组的管理。虽然它们看似相似,但却有着不同的功能和应用场景。本文将深入探讨它们之间的区别,提供详细的解释和实例代码,以帮助初学者更好地理解和运用。通过深入理解resize和reserve的区别,开发者可以更加灵活地管理容器的大小和存储空间,从而提高代码的效率和性能。在实际应用中,根据具体需求选择合适的操作,可以更好地优化程序的运行效果。转载 2024-06-19 17:21:07 · 144 阅读 · 0 评论 -
Linux 下判断一个字符串ip是否合法
因此,整个正则表达式的含义是:匹配由四段数字和点号组成的字符串,每一段数字的范围为0到255,且字符串的开头和结尾不能有其他字符。这符合 IPv4 地址的格式规范。C++11 引入了正则表达式库 std::regex,可以方便地使用正则表达式来匹配字符串。原创 2024-06-19 16:46:56 · 482 阅读 · 0 评论 -
C/C++字节对齐(pack)
字节对齐原创 2023-11-27 23:40:16 · 917 阅读 · 0 评论 -
C++各种字符转换
字符串转换原创 2023-11-17 11:57:08 · 1507 阅读 · 0 评论 -
C_CPP变量命名规范V2.0
常量、宏定义和枚举一般都是所有字母大写,特别是宏定义,在不同字母之间,可以加上下划线,也可以不加。原创 2023-11-04 17:28:05 · 401 阅读 · 0 评论 -
C++ 多线程:std::future
future原创 2023-08-06 22:22:03 · 582 阅读 · 0 评论 -
MVC架构模式
MVC 模式MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式。这种模式用于应用程序的分层开发。Model(模型) - 模型代表一个存取数据的对象或 JAVA POJO。它也可以带有逻辑,在数据变化时更新控制器。View(视图) - 视图代表模型包含的数据的可视化。Controller(控制器) - 控制器作用于模型和视图上。它控制数据流向模型对象,并在数据变化时更新视图。它使视图与模型分离开。...原创 2020-11-16 22:37:14 · 902 阅读 · 0 评论 -
微服务架构-实现技术之六大基础组件:服务通信+事件驱动+负载均衡+服务路由+API网关+配置管理
路由架构转载 2020-10-19 21:31:47 · 1260 阅读 · 0 评论 -
log4cpp浅析
log4cpp转载 2023-02-01 14:49:56 · 161 阅读 · 0 评论 -
C++14 auto
C++14 auto原创 2022-08-31 19:10:36 · 373 阅读 · 0 评论 -
C++中move的使用
move转载 2022-08-30 19:18:16 · 1011 阅读 · 0 评论 -
function函数
funtion转载 2022-08-30 09:30:27 · 1311 阅读 · 0 评论 -
lambda表达式
lambda转载 2022-08-29 18:59:02 · 192 阅读 · 0 评论 -
C++代码接口封装两种方法
C++代码接口封装方法方法1:对原功能代码再包一层方法2:父类声明为纯虚函数博客参考概述在多人协作开发中,常常会涉及代码打包和接口封装。方法1:对原功能代码再包一层由于我们不想暴露AImpl.h中,故对其封装,即在A.h和A.cpp中对其包一层。我们甚至在A.h中都不需要声明 AImpl *imp_的,在A.h中可以只声明一个void *imp_,在A.cpp中将该void *指针转换成Almpl *即可。AImpl.hclass AImpl{public: ... priva转载 2022-05-20 09:27:14 · 4611 阅读 · 0 评论 -
C++调用C函数
C++调用C函数C++调用C函数referenceC++调用C函数/************************test1.c***************************/#ifdef __cplusplusextern "C"{#endif //add函数定义 int add(int a,int b) { return a+b; } //sub函数定义 int sub(int a,int b) { return a-b; }#ifdef __cpluspl转载 2022-05-04 00:26:27 · 1739 阅读 · 0 评论 -
用一年时间如何能掌握 C++
用一年时间如何能掌握 C++reference谭庆波哈尔滨工业大学 计算机博士在读按照这个路线去学习C++,每个阶段都帮你规划好了学习时间,差不多正好一年时间,帮你从入门到进阶一键搞定:一、C++基础(3个月)1、面向对象的三大特性:封装、继承、多态2、类的访问权限:private、protected、public3、类的构造函数、析构函数、赋值函数、拷贝函数4、移动构造函数与拷贝构造函数对比5、深拷贝与浅拷贝的区别6、空类有哪些函数?空类的大小?7、内存分区:全局区、堆区、栈区、常量转载 2022-04-07 12:02:29 · 354 阅读 · 0 评论 -
C++多态概念
C++多态概念C++多态概念C++多态概念多态是面向对象设计语言重要的机制之一,代指同一名字的事物可以完成不同的功能。多态机制可以细分为编译时多态和运行时多态。编译时多态主要指重载的函数,程序编译时就能根据实参确定应该调用哪个函数;运行时多态应用在具有继承关系的多个类中,与虚函数等概念有关。通常情况下,多态指的就是运行时多态,本专题将详细讲解多态的概念和语法,以及多态的底层实现机制。...转载 2022-02-21 08:44:43 · 499 阅读 · 0 评论 -
C++二进制文件读写操作
C++二进制文件读写操作C++二进制文件读写操作referenceC++二进制文件读写操作二进制文件的读写稍微麻烦一些,对二进制文件的读写同样需要打开文件和关闭文件,打开和关闭方式与文本文件相同,只不过需要在打开方式上加上 ios::binary 以指明以二进制方式进行读写。对于文本文件而言,我们只能用 ofstream 类定义对象用于输出到文件,用 ifstream 类定义对象用于从文件中输入,而对于二进制文件而言,除了可以这么做以外,我们还可以用 fstream 类定义对象既能用于从文件输入,又能转载 2022-02-20 23:41:21 · 6766 阅读 · 0 评论 -
C++格式标识和操纵器
C++格式标识和操纵器C++格式标识和操纵器C++格式标识和操纵器#include<iostream>using namespace std;int main(){ ios_base::fmtflags old_val = cout.flags( ios_base::left | ios_base::hex |ios_base::uppercase | ios_base::showbase ); for( int i = 100; i < 150; i ++转载 2022-02-20 23:24:59 · 231 阅读 · 0 评论 -
C++标准输出流对象
C++标准输出流对象C++标准输出流对象C++标准输出流对象程序设计过程中,不可避免地要进行输入与输出操作。前面章节列举的示例程序中,我们通常都会引入头文件,因为该头文件系统声明了输入输出类的对象,包含了该头文件后,我们就可以直接使用这些对象。这些对象中包含标准的输出流对象 cout、cerr 和 clog 以及标准输入流对象 cin 等。本节,我们就来了解一下标准输出流的三个对象:cout、cerr 和 clog。所谓标准输出,其实就是向标准输出设备进行输出。通常来讲,我们可以将标准输出设备理解为显转载 2022-02-20 23:21:05 · 794 阅读 · 0 评论 -
C++ STL算法
C++ STL算法C++ STL算法referenceC++ STL算法STL 提供了大量操作容器的算法,这些算法大致可以分为:排序、搜索、集合运算、数值处理和拷贝等,这些算法的实现是采用函数模板来实现的,函数模板类似于类模板。对于 STL 算法而言,算法是一样的,只是所处理的容器不同,只要使用合适的迭代器,就可以直接用算法操作容器了。#include <iostream>#include <vector>#include <algorithm>using n转载 2022-02-20 23:17:53 · 377 阅读 · 0 评论 -
C++标准模板库STL的概念
C++标准模板库STL的概念C++标准模板库(STL)的概念C++标准模板库(STL)的概念STL(Standard Template Library)标准模板库是 C++ 标准库中的一部分,标准模板库为 C++ 提供了完善的数据结构及算法。STL 标准模板库包括三部分:容器、算法和迭代器。容器是对象的集合,STL 的容器有:vector、stack、queue、deque、list、set 和 map 等。STL 算法是对容器进行处理,比如排序、合并等操作。迭代器则是访问容器的一种机制。在 C++转载 2022-02-20 23:10:12 · 214 阅读 · 0 评论 -
C++模板中的函数式参数
C++模板中的函数式参数C++模板中的函数式参数C++模板中的函数式参数前面我们提到过,模板类至少有一个类参数,但是可以有多个参数,这些参数中可以存在非类类型的参数,例如系统内建的普通数据类型参数或程序自定义的数据类型参数,我们将这种非类类型的参数称之为函数式参数。template< class T, int S, double R>class test{ //......};在本例中例举了函数式参数的用法,在模板头中,先是一个类参数 T,之后是两个函数式参数 S 和 R转载 2022-02-20 23:03:23 · 503 阅读 · 0 评论 -
C++模板基本概念及语法
C++模板基本概念及语法C++模板基本概念及语法referenceC++模板基本概念及语法C++ 提供了多种代码重用机制,在前面介绍派生和继承时,派生类可以继承基类中的成员变量和成员函数。模板是另一种代码重用机制。有时候在设计程序的时候会遇到这样一种情况:需要设计的几个类,其功能都是一样的,仅仅只是需要操作的数据类型不同。例如我们需要创建一个数组类,该数组可能是 int 整型数组,也可能是 double 类型数组、string 类型数组等。解决类似的问题,固然可以将所有的类都设计一遍,但是在 C++转载 2022-02-20 22:58:28 · 206 阅读 · 0 评论 -
C++提取子字符串
C++提取子字符串substr()find()find_first_of()find_first_not_ofsubstr()substr() 函数可以提取 string 字符串中的子字符串,该函数有两个参数,第一个参数为需要提取的子字符串的起始下标,第二个参数是需要提取的子字符串的长度。#include <iostream>#include <string>using namespace std;int main(){ string s1 = "first原创 2022-02-20 22:39:25 · 10197 阅读 · 0 评论 -
C++ string类型变量的定义
stringstringreferencestring#include <iostream>#include <string>using namespace std;int main(){ string s1; string s2 = "string"; string s3 = s2; string s4 (10, 's'); cout << "s1:" << s1 << endl;原创 2022-02-20 21:39:49 · 2838 阅读 · 0 评论 -
C++重载转型操作符
C++重载转型操作符C++重载转型操作符referenceC++重载转型操作符前面我们已经介绍过转型构造函数,转型构造函数可以将其它类型的参数转换为类类型。如果我们要进行相反的转换过程,将类类型转换为其它数据类型,则需重载转型操作符转型操作符重载函数的声明语法如下:operator 类型名 ();转型操作符重载函数有几点需要注意的:1.函数没有返回类型;2.虽然没有返回类型但是函数体中必须有return语句,其返回类型是由类型名来指定的;3.转型操作符重载函数只能以类的成员函数的形式进行重转载 2022-02-20 21:12:52 · 230 阅读 · 0 评论 -
C++重载自增与自减操作符
C++重载自增与自减操作符C++重载自增与自减操作符referenceC++重载自增与自减操作符自增运算符++与自减运算符–都是一元操作符,其前置和后置两种形式都可以被重载。有了前面介绍操作符重载的基础,我们直接以示例的形式讲解重载自增和自减操作符的方法。#include <iostream>#include <iomanip>using namespace std;class stopwatch{public: stopwatch(){ min = 0转载 2022-02-20 21:06:20 · 517 阅读 · 0 评论 -
C++函数调用操作符重载
C++函数调用操作符重载C++函数调用操作符重载referenceC++函数调用操作符重载与下标操作符重载函数相同,我们同样需要以类成员函数的形式对函数调用操作符( )进行重载。其声明语法只有一种形式:返回类型 operator()(参数列表);#include<iostream>#include<string>using namespace std;class Array{public: Array(){len1 = 0; len2 = 0; num转载 2022-02-20 20:48:56 · 341 阅读 · 0 评论 -
C++重载下标操作符
C++重载下标操作符C++重载下标操作符referenceC++重载下标操作符前面已经提到,下标操作符[ ]必须要以类的成员函数的形式进行重载。其在类中的声明格式如下:返回类型 & operator[] (参数)或const 返回类型 & operator[] (参数)如果使用第一种声明方式,操作符重载函数不仅可以访问对象,同时还可以修改对象。如果使用第二种声明方式,则操作符重载函数只能访问对象,不能修改对象。在我们访问数组时,通过下标去访问数组中的元素并不具有检查边界溢出功转载 2022-02-20 20:38:48 · 471 阅读 · 0 评论 -
C++重载赋值操作符
重载赋值操作符重载赋值操作符重载赋值操作符赋值操作符“=”可以用来将一个对象拷贝给另一个已经存在的对象。如果我们重新定义了一种新的数据类型,比如说复数类,那么我们就需要重载一下赋值操作符,使之能够满足我们的赋值需求。当然,拷贝构造函数也有同样的功能。拷贝构造函数可以将一个对象拷贝给另一个新建的对象。如果我们没有在类中显式定义拷贝构造函数,也没有重载赋值操作符,那么系统会为我们的类提供一个默认的拷贝构造函数和一个赋值操作符。前面在介绍类的相关知识时已经提到,系统为我们提供的默认拷贝构造函数只是将源对象中原创 2022-02-19 09:37:14 · 1615 阅读 · 0 评论 -
C++重载输入与输出操作符
C++重载输入与输出操作符C++重载输入与输出操作符stream friendC++重载输入与输出操作符在 C++ 中,系统已经对左移操作符“<<”和右移操作符“>>”分别进行了重载,使其能够用作输入输出操作符,但是输入输出的处理对象只限于系统内建的数据类型。系统重载这两个操作符是以系统类成员函数的形式进行的,因此cout<< var; 语句可以理解为:cout.operator<<(var);如果我们自己定义了一种新的数据类型,需要用输入输出操作符转载 2022-02-19 08:55:08 · 830 阅读 · 0 评论 -
C++ typeid操作符
C++ typeid操作符C++ typeid操作符referenceC++ typeid操作符#include <iostream>#include <typeinfo.h>using namespace std;int main(){ cout << "Hello World!" << endl; int a; double b; char * c; long d; cout <&l转载 2022-02-16 22:06:14 · 348 阅读 · 0 评论 -
C++ dynamic_cast操作符
C++ dynamic_cast操作符C++ dynamic_cast操作符正确使用 dynamic_cast 的代码总结C++ dynamic_cast操作符在 C++ 中,编译期的类型转换有可能会在运行时出现错误,特别是涉及到类对象的指针或引用操作时,更容易产生错误。Dynamic_cast 操作符则可以在运行期对可能产生问题的类型转换进行测试。#include<iostream>using namespace std;class base{public : void原创 2022-02-16 21:54:02 · 1107 阅读 · 0 评论 -
C++抽象基类和纯虚成员函数
C++抽象基类和纯虚成员函数C++抽象基类和纯虚成员函数小结referenceC++抽象基类和纯虚成员函数公共接口是指一系列成员函数的集合,支持该接口的类必须以合适的方式重新定义这些成员函数,否则就无法创建对象。C++ 中可以通过抽象基类来实现公共接口,为了介绍抽象基类,我们需要先来了解一下纯虚成员函数。纯虚成员函数的声明语法如下:virtual 函数返回类型 函数名 (函数参数) = 0;纯虚成员函数没有函数体,只有函数声明,在纯虚函数声明结尾加上“=0”表明此函数为纯虚成员函数。包含纯虚成原创 2022-02-16 21:35:33 · 538 阅读 · 0 评论 -
C++虚析构函数_很重要
@tocC++虚析构函数(很重要)#include<iostream>using namespace std;class base{public: base(); ~base();private: int * a;};class derived: public base{public: derived(); ~derived();private: int * b;};base::base(){ cout&原创 2022-02-16 21:08:56 · 114 阅读 · 0 评论 -
C++虚成员函数表vtable
C++虚成员函数表vtableC++虚成员函数表vtablereferenceC++虚成员函数表vtable#include<iostream>using namespace std;class base{public: virtual void v1(){ cout << "base v1" <<endl; } virtual void v2(){ cout << "base v2" <<endl; }};cl转载 2022-02-16 20:56:26 · 242 阅读 · 0 评论 -
C++多态
C++多态C++多态多态V2.0referenceC++多态在 C++ 程序中,每一个函数在内存中会分配一段存储空间,存储空间的起始地址则为函数的入口地址。例如我们在设计一个程序时都必须为程序设计一个主函数,主函数同样会在内存中被分配一段存储空间,这段存储空间的起始地址就是函数的入口地址。前面列举的所有程序中,函数的入口地址与函数名是在编译时进行绑定的,我们称之为编译期绑定,而多态的功能则是将函数名动态绑定到函数入口地址,这样的动态绑定过程称为运行期绑定。换句话说,运行期绑定指的是函数名与函数入口地址转载 2022-02-15 08:58:36 · 237 阅读 · 0 评论