
C++
文章平均质量分 75
C++的学习知识
u_hcy2000
这个作者很懒,什么都没留下…
展开
-
使用restbed库的创建基于rest风格的web后端之C++(2)之类对象的创建、变量内存占用
文章目录1 智能指针的使用2 创建对象的方式2.1 建立对象2.2 建立对象指针(配合智能指针)2.3 总结1 智能指针的使用项目中的Session对象是用的shared_ptr智能指针管理的建立Resource对象也是用的shared_ptr智能指针管理的2 创建对象的方式2.1 建立对象语法:ClassName object(param);这样就声明了一个ClassName类型的object对象,C++会为它分配足够的存放对象所有成员的存储空间。注意:为节省存储空间,C++创建对象时仅原创 2022-01-13 15:18:27 · 454 阅读 · 0 评论 -
C++四种强制类型转换
文章目录1 C++类型转换本质1.1 自动类型转换(隐式)1.2 强制类型转换(显式)1.3 类型转换的本质1.4 类型转换的安全性2 四种类型转换运算符2.1 C语言的强制类型转换与C++的区别3 static_cast4 reinterpret_cast5 const_cast6 dynamic_cast6.1 向上转型(Upcasting)6.2 向下转型(Downcasting)1 C++类型转换本质1.1 自动类型转换(隐式)利用编译器内置的转换规则,或者用户自定义的转换构造函数以及类型转换原创 2022-01-13 11:37:16 · 11063 阅读 · 1 评论 -
vscode快捷键
Ctrl+Shift+P 打开命令面板原创 2022-01-13 09:27:28 · 138 阅读 · 0 评论 -
C++之const的用法(1)
文章目录1 const修饰函数参数1.1 const 用于修饰“指针传递”的参数,以防意外改动指针所指数据1.2 不要给值传递的参数加const修饰2 const修饰函数返回值2.1 const 修饰函数返回值(返回指针)2.2 const 修饰函数的返回值(返回引用)2.3 const 修饰函数返回值(值传递)1 const修饰函数参数保护函数参数的内容不被意外修改1.1 const 用于修饰“指针传递”的参数,以防意外改动指针所指数据举个例子:void StringCopy(char *str原创 2022-01-11 10:13:33 · 267 阅读 · 0 评论 -
使用restbed库的创建基于rest风格的web后端之C++(1)之文件、字符串、容器相关操作
文章目录1 文件操作1.1 文件操作之以每行写入字符串到文件中2 字符串操作2.1 字符串的替换操作2.2 map与json字符串互转2.2.1 map转为json字符串2.2.2 map转为子json字符串数组的形式2.3 关于char* 与 string以及unsigned char *的互转,以及const强转的相关问题1 文件操作背景:此次主要使用的是将请求和响应的数据资源保存到文件中不是数据库,会涉及到很多C++的文件操作1.1 文件操作之以每行写入字符串到文件中ofstream outf原创 2022-01-09 22:01:42 · 806 阅读 · 0 评论 -
C++ 函数对象
1 概念将()运算符重载为一个类的成员函数,这个类就称为函数对象类。这个类的对象就是函数对象。函数对象是一个对象,但是使用的形式看起来像函数调用,实际上也执行了函数调用,因而得名。举个例子:class CAverage{public: //重载()运算符 double operator()(int a1, int a2, int a3) { return (double)(a1 + a2 + a3) / 3; }};int main(){原创 2021-12-31 15:18:11 · 528 阅读 · 0 评论 -
Effective STL阅读笔记(1)
文章目录1 容器2 vector 和 string3 关联容器4 迭代器5 算法6 函数7 在程序中使用STL8 学习过程中的一些思考8.1 vector可以实现stack的功能,为什么还需要stack1 容器2 vector 和 string3 关联容器4 迭代器5 算法6 函数7 在程序中使用STL8 学习过程中的一些思考8.1 vector可以实现stack的功能,为什么还需要stackvector是容器,stack是容器适配器扩充:什么是容器适配器?容器适配器本质上还是容器原创 2021-12-31 13:32:53 · 807 阅读 · 0 评论 -
C++之智能指针(C++的垃圾回收机制)
文章目录1 智能指针1.1 智能指针的作用1.2 智能指针有哪些1.3 nullptr1.4 shared_ptr1.4.1 内存资源管理不当案例1.4.2 垃圾回收机制1.4.3 shared_ptr指针初始化1.4.4 成员方法1.5 unique_ptr1.5.1 unique_ptr智能指针的创建1.5.2 释放堆内存1.5.3 成员方法1.6 weak_ptr1.6.1 weak_ptr指针的创建1.6.2 weak_ptr成员方法1 智能指针1.1 智能指针的作用智能指针的行为类似常规指针原创 2021-12-31 11:40:50 · 2948 阅读 · 2 评论 -
C++基础(9)之IO
01.C++类型转换(了解)静态转换:用于类层次结构中基类(父类)和派生类(子类)之间指针或引用的转换用于基本数据类型之间的转换,如把int转换成char,把char转换成int。这种转换的安全性也要开发人员来保证动态转换:l ynamic_cast主要用于类层次间的上行转换和下行转换;l 在类层次间进行上行转换时,dynamic_cast和static_cast的效果是一样的;l 在进行下行转换时,dynamic_cast具有类型检查的功能,比static_cast更安全;常量转换原创 2021-12-27 23:27:00 · 1197 阅读 · 0 评论 -
C++基础(8)之模板
01.模版的概念(了解)1.函数或类是通用,但是里面的数据类型的多种状态2.模版有:函数和类02.函数模版(重点)1.什么是函数模版函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体制定,用一个虚拟的类型来代表。这个通用函数就成为函数模板2.怎么编写函数模版//T代表泛型的数据类型,不是只能写T,template<class T>//让编译器看到这句话后面紧跟着的函数里有T不要报错void mySwap(T &a,T &b){ T tmp = a原创 2021-12-27 23:25:01 · 225 阅读 · 0 评论 -
C++基础(7)之多态、接口
01.多态(重点难点)1.什么是多态:同一个操作作用于不同的对象,可以有不同的解释,会产生不同的效果,这就是多态class People{public: //虚函数 virtual void Mypro() { }};class xishi :public People{public: //重写父类的虚函数 virtual void Mypro() { cout << "约西施" << endl; }};class wangzhaoju原创 2021-12-27 23:21:09 · 348 阅读 · 1 评论 -
C++基础(6)之继承、静态联编与动态联编
01.智能指针类(重点)1.智能指针类是管理另一个类的对象的释放class Maker{public: Maker() { cout << "无参构造" << endl; } void printMaker() { cout << "hello Maker" << endl; } ~Maker() { cout << "析构函数" << endl; }};class SmartPoint{原创 2021-12-27 23:16:55 · 442 阅读 · 0 评论 -
C++基础(5)之运算符重载
01.数组类(了解)1.目的:设计一个类,该类有数组的功能,可以存储数据,可以删除修改数据2.设计核心数据1.属性:指针(指向堆区空间),数组实际存储的元素个数,数组容量2.方法:构造(开辟堆区空间),尾插,头插,指定位置插入,尾删,头删,获取指定位置的值,指定位置修改值,获取数组元素个数,获取数组容量,析构函数3.代码实现(看代码)02.运算符重载的概念(重点)1.运算符重载,就是对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型。2.运算符重载的目的是让语法更加简洁3.原创 2021-12-27 23:12:12 · 443 阅读 · 0 评论 -
C++基础(4)之static、this指针、友元
01.explicit的作用(了解)class Maker{public: //explicit只能放在构造函数前面,构造函数只有一个参数或其他参数有默认值时 explicit Maker(int n)//防止编译器优化Maker m=10;这种格式 { }};int main(){ //Maker m = 10;err}02.C++的堆区空间的申请和释放(重点)1.申请和释放变量空间1.为什么要有新的方法申请和释放堆区空间因为用C语言的方式不会调用构造和析构函数2.原创 2021-12-27 23:10:20 · 473 阅读 · 0 评论 -
C++基础(3)之构造函数、析构函数、拷贝构造
1.初始化和清理的概念(了解)1.当对象产生时,必须初始化成员变量,当对象销毁前,必须清理对象2.初始化用构造函数,清理用析构函数,这两个函数是编译器调用2.构造函数和析构函数(重点)1.初始化的作用和析构函数的作用构造函数的作用class Maker{public: //构造函数的作用是初始化成员变量,是编译器去调用的 Maker() { a = 10; cout << "构造函数" << endl; } //析构函数,在对象销毁前,编译器调用析原创 2021-12-27 23:00:30 · 430 阅读 · 0 评论 -
C++基础(2)之函数、类的概念
01.引用的使用场景(重点)1.引用作为函数参数//1.引用作为函数参数void func(int &a, int &b){ int sum = a + b; cout << "sum=" << sum << endl;}void test01(){ int a = 10; int b = 20; func(a, b);}2.引用作为函数的返回值//2.引用作为函数的返回值int& func2(){ int原创 2021-12-27 22:53:20 · 478 阅读 · 0 评论 -
C++基础(1)之命名空间、指针和引用
01.C++概述(了解)c++语言在c语言的基础上添加了面向对象编程和泛型编程的支持。02.第一个程序helloworld(掌握)#define _CRT_SECURE_NO_WARNINGS#include<iostream>using namespace std;//标准命名空间int main(){ //cout是标准的输出流对象,打印字符串, //endl是刷新缓冲区,并换行 cout << "hello world!" << endl;原创 2021-12-27 22:46:30 · 443 阅读 · 0 评论 -
Effective C++ 学习(1)
1 C++的联邦大厦C基础:区块、语句、预处理器、内置数据类型、数组、指针Object-Oriented C++:class、封装、继承、多态、虚函数Template C++:模板元编程(TMP)STL:template程序库,对容器、迭代器、算法和函数对象的规约和配合2 尽量使用const、enum、inline替换 #define在编译之前预处理器会替换掉宏定义的内容,所以编译器不可见,当程序编译出现此变量的错误信息时,无从查找,所以尽可能的使用编译阶段能被编译器检查的。#define原创 2021-12-27 15:11:03 · 459 阅读 · 0 评论 -
Windows中的vscode配置C++环境
原创 2021-12-27 01:41:33 · 899 阅读 · 0 评论 -
C++编码规范
1 数据类型类型 类型描述 示例u8 无符号的 8bit 字节 unsigned char byLetter -> u8 byLetteru16 无符号的 16bit 整数 unsigned short wValue -> u16 wValueu32 无符号的 32bit 整数 unsigned int dwValue -> u32 dwValueu64 无符号的 64bit 整数 unsigned long lo原创 2021-12-26 23:07:41 · 593 阅读 · 1 评论 -
STL容器(1)
文章目录1 STL概述1.1 建立STL的目的1.2 STL基本概念1.3 STL六大组件介绍2 STL三大组件2.1 容器2.2 算法2.3 迭代器2.4 总结3 STL的工作原理3.1 案例3.2 总结4 STL的helloworld(了解)5 string容器(重点)5.1 基本概念5.2 常用api5.3 常用api的注意事项6 vector容器(重点、常用)1 STL概述1.1 建立STL的目的为了建立数据结构和算法的一套标准,并且降低他们之间的耦合关系,以提升各自的独立性、弹性、交互操作性原创 2021-12-02 19:41:06 · 1760 阅读 · 1 评论 -
gcc、g++和gdb
1 gcc概念GNU计划打算开发一款完全开源的操作系统,但是比不上同期的Linux。因此采用了Linux的内核作为GNU操作系统的内核,并在此基础上开发了很多组件,GCC就是其中之一。GCC(GNU C Compile)作文早起的C语言的编译器,后期支持可以作为多语言的编译器。2 gcc编译器下载和安装一般Linux操作系统自带GCC编译器,可以通过键入一下命令来查看本机的版本gcc --version3 gcc与g++的区别gcc既可以编译C程序也可以编译C++文件,g++是专门用来编译C+原创 2021-12-26 23:01:37 · 2058 阅读 · 0 评论