12 2023 档案

摘要:文章参考: C++ 教程 | 爱编程的大丙 (subingwen.cn) C++11的原子量与内存序浅析 - 兔晓侠 - 博客园 (cnblogs.com) 从C++11起,C++为用户提供一套新的多线程类。线程相关操作头文件:thread #include <thread> 一. std::thr 阅读全文
posted @ 2023-12-19 22:10 BinaryPrinter 阅读(70) 评论(0) 推荐(0) 编辑
摘要:1. 隐式类型转换 在C++11前,对于类的使用,存在隐式类型转化的情况,实质上是构造函数的隐式调用。下面是一个例子: EG: 代码: #include <iostream> using namespace std; class Test { public: int x; int y; Test(i 阅读全文
posted @ 2023-12-12 21:42 BinaryPrinter 阅读(16) 评论(0) 推荐(0) 编辑
摘要:文章参考: 爱编程的大丙 (subingwen.cn) 1. 概述 弱引用智能指针std::weak_ptr是共享智能指针std::shared_ptr的助手,它不管理shared_ptr内部的原始指针,也没有重载操作符*、->,因此不共享指针,不能操作资源,所以它的构造和析构都不会影响引用计数。其 阅读全文
posted @ 2023-12-12 17:02 BinaryPrinter 阅读(34) 评论(0) 推荐(0) 编辑
摘要:文章参考: 爱编程的大丙 (subingwen.cn) 1. 初始化: 特点: 相较于共享智能指针,独占智能指针(unique_ptr)的关键在于:同一时刻,只能有一个智能指针指向同一块内存。因此独占智能指针不允许使用拷贝构造函数和拷贝赋值函数。 初始化: 通过构造函数初始化: unique_ptr 阅读全文
posted @ 2023-12-12 15:02 BinaryPrinter 阅读(26) 评论(0) 推荐(0) 编辑
摘要:文章参考: 爱编程的大丙 (subingwen.cn) 所谓智能指针,其实就是C++11封装的类,里面存有一个正常指针,智能指针会通过这个正常指针,来监视指针指向的内存,当没有智能指针指向该内存时,该内存就被释放。其核心在于引用计数,每一个智能指针指向内存A,智能指针内部的引用计数就加一。每析构一次 阅读全文
posted @ 2023-12-12 15:02 BinaryPrinter 阅读(94) 评论(0) 推荐(0) 编辑
摘要:文章参考: 爱编程的大丙 (subingwen.cn) 1. 联合体 联合体又名共用体,使用方式和struct相似,其特点在于: 联合体中所有的成员变量,引用的都是内存中的相同位置。 如果联合的不同成员有不同的长度,取最长的那个变量作为联合的长度。 如果将结构体作为联合的成员变量,那么联合的大小取决 阅读全文
posted @ 2023-12-11 18:30 BinaryPrinter 阅读(27) 评论(0) 推荐(0) 编辑
摘要:文章参考 爱编程的大丙 (subingwen.cn) 1. 枚举 1.1 概述 在C/C++中的枚举来自于C,处于设计上简单的目的,枚举往往对应到整型数值。: // 匿名枚举 enum {Male, Female}; // 0, 1 // 有名枚举 enum Color {Red, Yellow=2 阅读全文
posted @ 2023-12-11 14:45 BinaryPrinter 阅读(86) 评论(0) 推荐(0) 编辑
摘要:文章参考: 爱编程的大丙 (subingwen.cn) 1. 语法改进 在C++98中,如果想要声明类B是类A的友元类,需要class关键字,而在C++11中,可以省略关键字class,还可以使用别名。 EG: C++98中: class B; class A{ friend class B; // 阅读全文
posted @ 2023-12-08 17:29 BinaryPrinter 阅读(12) 评论(0) 推荐(0) 编辑
摘要:文章参考: 爱编程的大丙 (subingwen.cn) 1. 类与默认函数 在C++中声明自定义的类,编译器会默认帮程序员生成一些未定义的成员函数,这些函数被称为默认函数,一共有六个: 无参构造函数:创建类对象 拷贝构造函数:拷贝类对象 移动构造函数:拷贝类对象。 拷贝赋值函数:类对象赋值。 移动赋 阅读全文
posted @ 2023-12-08 16:07 BinaryPrinter 阅读(12) 评论(0) 推荐(0) 编辑
摘要:文章参考: 爱编程的大丙 (subingwen.cn) 1. POD概述 1.1 意义 POD:是plain old data的缩写,即普通的旧数据。POD通常用于说明一个类型的属性,尤其是用户自定义类型的属性,具体来说它是指没有使用面向思想来设计的类/结构体。 POD含义为: Plain:表示是一 阅读全文
posted @ 2023-12-08 15:19 BinaryPrinter 阅读(111) 评论(0) 推荐(0) 编辑
摘要:文章参考: 爱编程的大丙 (subingwen.cn) 1. 可调用对象 一组执行任务的语句都可以视作一个函数、一个可调用对象。C++中提供了可调用对象的概念,其应用相当广泛,例如在处理一些回调函数、触发函数时就会用到。 可调用对象有如下几种类型: 函数指针: int add(int a, int 阅读全文
posted @ 2023-12-07 15:35 BinaryPrinter 阅读(34) 评论(0) 推荐(0) 编辑
摘要:文章参考: 爱编程的大丙 (subingwen.cn) 1. C++98 在C++11之前,using有两种用法: 用来声明要使用的命名空间: using namesapce std; 当子类重载父类的同名成员函数时,通过using继承父类的同名函数。 #include <iostream> usi 阅读全文
posted @ 2023-12-06 14:57 BinaryPrinter 阅读(29) 评论(0) 推荐(0) 编辑
摘要:文章参考: 爱编程的大丙 (subingwen.cn) C++中有多种数据类型,如:变量、数组、对象。这些数据类型各自的初始化方式,并没有统一的方法。为了简化初始化过程,C++11提出了一种统一的初始化方法,即列表初始化。 1. 统一的初始化 1.1 C++98 在C++98中,有两种情况可以使用列 阅读全文
posted @ 2023-12-06 13:52 BinaryPrinter 阅读(121) 评论(0) 推荐(0) 编辑
摘要:文章参考: 爱编程的大丙 (subingwen.cn) 1. move 作用:主要作用有两点: 实现用左值来初始化右值引用。 进行对象间的资源转移。(避免使用拷贝,从而提高效率) 特点: 可以将左值转化为右值。 该函数和移动构造函数一样,都有移动语义,将对象的状态或者所有权从一个对象转移到另一个对象 阅读全文
posted @ 2023-12-05 13:53 BinaryPrinter 阅读(27) 评论(0) 推荐(0) 编辑
摘要:1. 异常处理 注意:以下内容在C++11中进行了优化,不再适用。 在C++98中,为程序可能出现的异常提供了一套完整的机制,其基本语法如下: 抛出异常: throw 表达式; try catch代码块: try{ 复合语句 }catch(异常类型){ 复合语句 }catch(异常类型){ 复合语句 阅读全文
posted @ 2023-12-04 17:20 BinaryPrinter 阅读(34) 评论(0) 推荐(0) 编辑
摘要:文章参考: 《C++面向对象程序设计》✍千处细节、万字总结(建议收藏)_白鳯的博客-CSDN博客 C++支持C的输入、输出结构,同时也建立了一套面向对象的输入、输出结构,且更加安全。其输入/输出通过字节流的形式实现。 1. 输入/输出头文件 iostream:包含了对输入/输出流进行操作所需的基本信 阅读全文
posted @ 2023-12-04 17:19 BinaryPrinter 阅读(50) 评论(0) 推荐(0) 编辑
摘要:文章参考: C++ 运算符重载_c++ 重载=-CSDN博客 1. 概述 如果不进行特殊处理,C++默认的运算符只能对基本的常量或变量进行运算,不能用于对象之间的运算。但有时我们希望对这些运算符功能进行拓展,让他们能够支持更多的运算。运算符重载应运而生。它能够赋予已有的运算符多重含义,使得同一运算符 阅读全文
posted @ 2023-12-04 17:18 BinaryPrinter 阅读(55) 评论(0) 推荐(0) 编辑
摘要:文章参考: 《C++面向对象程序设计》✍千处细节、万字总结(建议收藏)_白鳯的博客-CSDN博客 1. 引入 在编写函数和类时,有时会出现这样的情况,具体实现方式完全一致,但因此参数类型、返回值类型、数据类型等因素的不同,导致不得不写多个函数或者类(因为C++是强类型语言,无法隐式转换,且有些类型本 阅读全文
posted @ 2023-12-04 17:17 BinaryPrinter 阅读(26) 评论(0) 推荐(0) 编辑
摘要:文章参考: 《C++面向对象程序设计》✍千处细节、万字总结(建议收藏)_白鳯的博客-CSDN博客 1. 多态性概述 所谓多态性,就是不同对象接收不同消息时,产生不同的动作。这样就可以用相同的接口访问不同的函数,从而实现一个接口,多种方法。 从实现方式上看,多态性分为两种: 编译时多态: 在C++中, 阅读全文
posted @ 2023-12-04 17:16 BinaryPrinter 阅读(45) 评论(0) 推荐(0) 编辑
摘要:文章参考: 《C++面向对象程序设计》✍千处细节、万字总结(建议收藏)_白鳯的博客-CSDN博客 1. 继承案例 #include <iostream> #include <string> using namespace std; class Person{ private: string name 阅读全文
posted @ 2023-12-04 17:15 BinaryPrinter 阅读(27) 评论(0) 推荐(0) 编辑
摘要:文章参考: 《C++面向对象程序设计》✍千处细节、万字总结(建议收藏)_白鳯的博客-CSDN博客 相较于C语言的面向过程编程,C++改为面向对象编程,万物皆对象。 1. 构成 类一般由两部分构成: 数据成员 成员函数 访问权限可划分为三种,不同权限对应着不同的访问和继承规则: public prot 阅读全文
posted @ 2023-12-04 17:13 BinaryPrinter 阅读(31) 评论(0) 推荐(0) 编辑
摘要:文章参考: 《C++面向对象程序设计》✍千处细节、万字总结(建议收藏)_白鳯的博客-CSDN博客 1. 一个简单的案例 #include <iostream> //编译预处理命令 using namespace std; //使用命名空间 int add(int a, int b); //函数原型说 阅读全文
posted @ 2023-12-04 17:12 BinaryPrinter 阅读(12) 评论(0) 推荐(0) 编辑
摘要:文章参考:爱编程的大丙 (subingwen.cn) 1. 委托构造函数 目的: 允许同一个类中的一个构造构造函数调用其余构造函数,通过链式构造函数的形式,简化构造操作(类似于套娃)。 EG: #include <iostream> using namespace std; class Base{ 阅读全文
posted @ 2023-12-04 17:05 BinaryPrinter 阅读(47) 评论(0) 推荐(0) 编辑
摘要:文章参考:爱编程的大丙 (subingwen.cn) 1. 概述 Lambda表达式是现代编程语言的一个特点,他有如下优点: 声明式的编程风格:就地匿名定义目标函数或函数对象,不需要额外写一个命名函数或函数对象。 简洁:避免了代码膨胀和功能分散,然开发更加高效。 灵活:在需要的时间和地点实现功能闭包 阅读全文
posted @ 2023-12-04 17:05 BinaryPrinter 阅读(23) 评论(0) 推荐(0) 编辑
摘要:文章参考:爱编程的大丙 (subingwen.cn) C使用NULL表示空,其定义为: #define NULL ((void *)0) 在C++中同样定义了NULL,C和C++虽然都是强类型语言,但是C++对语言的要求更高,不允许(void *)类型进行隐式的类型转化,因此如果沿袭C中NULL的定 阅读全文
posted @ 2023-12-04 17:03 BinaryPrinter 阅读(8) 评论(0) 推荐(0) 编辑
摘要:文章参考:爱编程的大丙 (subingwen.cn) 1. const关键字 const关键字的判断: 限制为常量。只有在声明时使用字面量初始化的才是常量,可以进入符号表。 void func(const int a){ // 只读变量 ... } int x = 0; const int a = 阅读全文
posted @ 2023-12-04 17:02 BinaryPrinter 阅读(96) 评论(0) 推荐(0) 编辑
摘要:文章参考:爱编程的大丙 (subingwen.cn) 1. for循环新语法 在C++98中,对于不同的容器和数组,遍历方式不尽相同,也不够简洁。而在C++11中,基于范围的for循环可以更加方便的遍历容器和数组。 语法: for(declaration: expression){ ... } de 阅读全文
posted @ 2023-12-04 17:02 BinaryPrinter 阅读(81) 评论(0) 推荐(0) 编辑
摘要:文章参考:爱编程的大丙 (subingwen.cn) 1. auto 在C++11之前,auto和static相对应用于表示变量是自动存储的,但是非static局部变量默认都是自动存储的,auto因此显得额外鸡肋。C++11中对auto进行了扩展,使他能够自动推导变量的实际类型。 1.1 推导规则 阅读全文
posted @ 2023-12-04 17:01 BinaryPrinter 阅读(67) 评论(0) 推荐(0) 编辑
摘要:文章参考:爱编程的大丙 (subingwen.cn) 1. 基础概念 在C/C++中,表达式可以分为左值和右值。 左值(lvalue):是locator value的缩写,表示了存储在内存中,有明确存储地址(可寻址)的对象。 左值一般出现在表达式左侧,大部分左值是可以被修改的,但也存在一些不可以被修 阅读全文
posted @ 2023-12-04 17:00 BinaryPrinter 阅读(40) 评论(0) 推荐(0) 编辑
摘要:文章参考:爱编程的大丙 (subingwen.cn) 1. C++98 在C++98中,为程序可能出现的异常提供了一套完整的机制,其基本语法如下: 抛出异常: throw 表达式; try catch代码块: try{ 复合语句 }catch(异常类型){ 复合语句 }catch(异常类型){ 复合 阅读全文
posted @ 2023-12-04 16:59 BinaryPrinter 阅读(82) 评论(0) 推荐(0) 编辑
摘要:文章参考:爱编程的大丙 (subingwen.cn) 1. 断言 定义:断言是程序测试的一种常用手段,通过将一个返回值总是为真的判断表达式放在语句中,用于排除一些逻辑上的错误。 语法: assert(表达式):如果表达式为真,程序正常运行。如果为假,程序将会终止运行。 头文件:<cassert>/< 阅读全文
posted @ 2023-12-04 16:59 BinaryPrinter 阅读(48) 评论(0) 推荐(0) 编辑
摘要:文章参考:爱编程的大丙 (subingwen.cn) C++11中提供了专门的转换函数,用于对数值类型和字符串之间进行转换。 1. 数值转字符串 使用to_string()函数,这是一个重载函数,函数声明位于<string>头文件中,函数原型如下: // 头文件 <string> string to 阅读全文
posted @ 2023-12-04 16:58 BinaryPrinter 阅读(62) 评论(0) 推荐(0) 编辑
摘要:文章参考:爱编程的大丙 (subingwen.cn) 1. 连续右尖号 在C++11之前,如果模板实例化时出现了两个右尖号>>,它会被编译成右移操作符,而不是模板参数表的结束。显然,这回导致模板实例化失败,程序无法通过编译。 C++11中改进了编译器的解析规则,即:尽可能地将多个连续的右尖号(>)解 阅读全文
posted @ 2023-12-04 16:57 BinaryPrinter 阅读(22) 评论(0) 推荐(0) 编辑
摘要:文章参考:爱编程的大丙 (subingwen.cn) 1. final C++11中提供了final关键字。 作用: 写在类名后面,限制类不能被继承。 写在函数后面,限制函数被重写。 1.1 限制函数 被final限制的函数无法被重写。 #include <iostream> #include <c 阅读全文
posted @ 2023-12-04 16:57 BinaryPrinter 阅读(9) 评论(0) 推荐(0) 编辑
摘要:文章参考:爱编程的大丙 (subingwen.cn) 1. C++98类成员初始化 C++98中的初始化策略: 非静态数据成员,必须在构造函数中初始化。 静态数据成员,有两种情况: 在类外进行初始化。 如果是静态常量,而且是整形/枚举类型,可以在类中声明时直接加上=初始值来初始化。 EG: 代码: 阅读全文
posted @ 2023-12-04 16:56 BinaryPrinter 阅读(19) 评论(0) 推荐(0) 编辑
摘要:文章参考:爱编程的大丙 (subingwen.cn) 1. 定义 C++11标准要求long long类型在不同平台有不同的长度,但至少有64位,它分为两种: long long 类型:后面需要加上LL或ll的后缀。 long long num1 = 123456789LL; long long n 阅读全文
posted @ 2023-12-04 16:55 BinaryPrinter 阅读(70) 评论(0) 推荐(0) 编辑
摘要:文章参考:爱编程的大丙 (subingwen.cn) 概述: 在C和C++中,如果想在字符串中表示一些特殊字符,往往都是通过特殊字符进行转义。例如输入路径时,想要输入\,就要使用\\,对其进行转义,因为\是特殊字符。而在C++11中,提供了原始字面量这一操作,在原始字面量中省略了转义的操作,可以直接 阅读全文
posted @ 2023-12-04 16:54 BinaryPrinter 阅读(27) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示