
C++ 编程设计
文章平均质量分 82
C++ 编程语言
MR_Promethus
番茄暴打凤梨 忠实粉丝
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++ 学习笔记
当 value 类型为 char* 时,cout会从 value 这个 char * 地址开始遍历地址对应的元素直至遇到 ‘\0’ 字符。原创 2024-04-08 17:29:28 · 954 阅读 · 0 评论 -
【C++ 11】完美转发
C++11 标准为 C++ 引入右值引用语法的同时,还解决了一个 C++ 98/03 标准长期存在的短板,即使用简单的方式即可在函数模板中实现参数的完美转发。完美转发:指的是函数模板可以将自己的参数 “完美” 地转发给内部调用的其它函数,不仅能准确地转发参数的值,还能保证被转发参数的左、右值属性不变。原创 2024-10-21 21:15:21 · 1238 阅读 · 0 评论 -
【C++ 11】移动构造函数
通过执行结果我们不难得知,当为 demo 类添加移动构造函数之后,使用临时对象初始化 a 对象过程中产生的 2 次拷贝操作,都转由移动构造函数完成。将之前拷贝得到的临时对象复制给 a。复制一份之前生成的匿名对象。原创 2024-10-21 16:30:59 · 1592 阅读 · 0 评论 -
【C++ 11】&& 右值引用
【代码】【C++ 11】右值引用。原创 2024-10-19 20:57:51 · 868 阅读 · 0 评论 -
【C++ 11】shared_ptr、unique_ptr、weak_ptr 智能指针
问题背景在实际的 C++开发中,我们经常会遇到诸如程序运行中突然崩溃、程序运行所用内存越来越多最终不得不重启等问题,这些问题往往都是内存资源管理不当造成的。针对以上这些情况,很多程序员认为 C++ 语言应该提供更友好的内存管理机制,这样就可以将精力集中于开发项目的各个功能上。事实上,显示内存管理的替代方案很早就有了,早在 1959 年前后,就有人提出了 “垃圾自动回收” 机制。所谓垃圾,指的是那些不再使用或者没有任何指针指向的内存空间,而“回收”则指的是将这些“垃圾”收集起来以便再次利用。原创 2024-10-21 15:06:44 · 1141 阅读 · 0 评论 -
【C++ 11】nullptr 空指针
【代码】【C++ 11】nullptr 空指针。原创 2024-10-08 23:05:19 · 1225 阅读 · 0 评论 -
【C++ 11】for 基于范围的循环
auto。原创 2024-10-08 22:20:22 · 2109 阅读 · 0 评论 -
【C++ 11】auto 自动类型推导
auto 的一个典型应用场景是用来定义 STL 的迭代器。问题背景我们在使用 stl 容器的时候,需要使用迭代器来遍历容器里面的元素;不同容器的迭代器有不同的类型,在定义迭代器时必须指明,而迭代器的类型有时候比较复杂,书写起来很麻烦,如下所示:定义迭代器 i 的时候,类型书写比较冗长,容易出错。return 0;然而有了 auto 类型推导,我们大可不必这样,只写一个 auto 即可。原创 2024-10-08 21:36:18 · 1528 阅读 · 0 评论 -
【C++ 11】lambda 匿名函数
【代码】【C++ 11】lambda 匿名函数。原创 2024-10-04 17:53:33 · 1958 阅读 · 0 评论 -
【C++上层应用】6. Web编程*
公共网关接口(Common Gateway Interface,CGI),是一套标准,定义了信息是如何在 Web 服务器和客户端脚本之间进行交换的。CGI 规范目前是由 NCSA 维护的,NCSA 定义 CGI 如下:公共网关接口(CGI),是一种用于外部网关程序与信息服务器(如 HTTP 服务器)对接的接口标准。原创 2023-11-21 15:08:09 · 195 阅读 · 0 评论 -
【C++上层应用】5. 多线程*
pthread_join() 子程序阻碍调用程序,直到指定的 threadid 线程终止为止。当创建一个线程时,它的某个属性会定义它是否是可连接的(joinable)或可分离的(detached)。只有创建时定义为可连接的线程才可以被连接。如果线程创建时被定义为可分离的,则它永远也不能被连接。原创 2023-11-21 10:24:58 · 324 阅读 · 0 评论 -
【C++上层应用】4. 信号/中断
不管我们想在程序中捕获什么信号,必须使用 signal 函数来注册信号,并将其与信号处理程序相关联。原创 2023-11-21 14:45:56 · 317 阅读 · 0 评论 -
【C++上层应用】3. 异常处理
我们可以通过继承和重载 exception 类来定义新的异常。实例:在这里,what() 是异常类提供的一个公共方法,它已被所有子异常类重载。这将返回异常产生的原因。int main()try//其他的错误。原创 2023-11-20 21:55:40 · 173 阅读 · 0 评论 -
【C++上层应用】2. 文件流
文件处理,必须在 C++ 源代码文件中包含头文件 和原创 2023-11-21 11:28:38 · 459 阅读 · 0 评论 -
【C++上层应用】1. 动态分配内存
在 函数内部 声明的所有变量都将占用栈内存:这是程序中未使用的内存,在程序运行时可用于。原创 2023-11-21 09:59:55 · 210 阅读 · 0 评论 -
【C++面向对象】12. 数据抽象*、数据封装*、接口/抽象类*
实例:把数字相加,并返回总和;公有成员 addNum 和 getTotal 是对外的接口,用户需要知道它们以便使用类。私有成员 total 是用户不需要了解的,但又是类能正常工作所必需的。访问标签出现的频率没有限制。每个访问标签指定了紧随其后的成员定义的访问级别。指定的访问级别会一直有效,直到遇到下一个访问标签或者遇到类主体的关闭右括号为止。C++ 程序中,任何带有公有和私有成员的类都可以作为数据抽象的实例。来定义类的抽象接口。在 C++ 中,我们使用。原创 2023-11-15 18:08:01 · 275 阅读 · 0 评论 -
【C++面向对象】11. 多态、虚函数、纯虚函数
多态按字面的意思就是多种形态。当类之间存在层次结构,并且类之间是通过继承关联时,就会用到多态。C++ 多态意味着调用成员函数时,会根据调用函数的对象的类型来执行不同的函数。实例:基类 Shape 被派生为两个类,定义基类的指针,指针指向两个派生类的对象,分别调用派生类内部的成员函数 area()。height = b;public:public:// 程序的主函数。原创 2023-11-15 17:39:18 · 190 阅读 · 0 评论 -
【C++面向对象】10. 模板
【代码】【C++面向对象】15. 模板。原创 2023-11-16 23:13:32 · 177 阅读 · 0 评论 -
【C++面向对象】9. 重载
重载的运算符是带有特殊名称的函数,函数名是由关键字 operator 和其后要重载的运算符符号构成的。与其他函数一样,重载运算符有一个返回类型和一个参数列表。类 Ptr 的对象可用于访问类 X 的成员,使用方式与指针的用法十分相似。语句 p->m 被解释为 (p.operator->())->m。运算符 -> 必须是一个成员函数。返回类型必须是指针或者是类的对象。原创 2023-10-26 11:35:33 · 406 阅读 · 0 评论 -
【C++面向对象】8. 继承
private 成员只能被本类成员(类内)和友元访问,不能被派生类访问;protected 成员可以被派生类访问。如果未使用访问修饰符 access-specifier,则。(public 和 protected 成员)原创 2023-10-25 23:09:04 · 340 阅读 · 0 评论 -
【C++面向对象】7. 类的静态成员
无论创建多少个类的对象,静态成员都只有一个静态成员在类的所有对象中是共享的。原创 2023-10-24 23:29:31 · 175 阅读 · 0 评论 -
【C++面向对象】6. 指向类的指针
【代码】【C++面向对象】6. 指向类的指针。原创 2023-10-24 22:56:46 · 325 阅读 · 0 评论 -
【C++面向对象】5. this指针
只有成员函数才有 this 指针(友元函数没有 this 指针,因为友元不是类的成员),this 指针是所有成员函数的隐含参数。在成员函数内部,this指针 可以用来指向调用对象。原创 2023-10-24 22:29:03 · 213 阅读 · 0 评论 -
【C++面向对象】4. 内联函数
如果想把一个函数定义为内联函数,则需要在函数名前面放置关键字 inline,在调用函数之前需要对函数进行定义。如果已定义的函数多于一行,编译器会忽略 inline 限定符。在类定义中的定义的函数都是内联函数,即使没有使用 inline 说明符。实例x : y;// 程序的主函数return 0;原创 2023-10-24 10:40:11 · 164 阅读 · 0 评论 -
【C++面向对象】3. 友元
友元函数是定义在类外部,但有权访问类的所有私有(private)成员和保护(protected)成员,即可以访问类的所有成员。友元函数的原型有在类的定义中出现过,但是友元函数并不是成员函数。整个友元类及其所有成员都是友元。原创 2023-10-23 09:40:35 · 275 阅读 · 0 评论 -
【C++面向对象】2.构造函数、析构函数
如果在类中没有定义拷贝构造函数,编译器会自行定义一个。如果类带有指针变量,并有动态内存分配,则它必须有一个拷贝构造函数。使用同一类中之前创建的对象来初始化新创建的对象。名称与类的名称是完全相同的,只是在前面加了个。类的构造函数是类的一种特殊的成员函数,它会。类的析构函数会在每次删除所创建的对象时执行。类的析构函数是类的一种特殊的成员函数,,也不会返回 void。原创 2023-10-19 21:56:25 · 738 阅读 · 0 评论 -
【C++面向对象】1. 类、对象
定义一个类,本质上是定义一个数据类型的蓝图。这实际上并没有定义任何数据,但它定义了类的名称意味着什么,也就是说,它定义了类的对象包括了什么,以及可以在这个对象上执行哪些操作。类定义是以关键字 class 开头,后跟类的名称。类的主体是包含在一对花括号中,类定义后必须跟着一个分号或一个声明列表。例如,我们使用关键字 class 定义 Box 数据类型,如下所示:class Boxpublic:// 盒子的长度// 盒子的宽度// 盒子的高度关键字 public 确定了类成员的访问属性。原创 2023-10-19 21:17:10 · 631 阅读 · 0 评论 -
【C++基础】14. 预处理器
我们已经看到,之前所有的实例中都有 #include 指令,这个宏用于把头文件包含到源文件中。C++ 提供了下表所示的一些预定义宏:宏描述LINE这会在程序编译时包含当前行号。FILE这会在程序编译时包含当前文件名。DATE这会包含一个形式为 month/day/year 的字符串,它表示把源文件转换为目标代码的日期。TIME这会包含一个形式为 hour:minute:second 的字符串,它表示程序被编译的时间。实例:return 0;原创 2023-11-20 22:56:44 · 424 阅读 · 1 评论 -
【C++基础】13. 输入输出流
C++ 预定义了一些 I/O 流对象来实现输入输出,这些 I/O 流对象关联相应设备(键盘、显示器等)并实现程序和设备之间的数据传输。C++ 预定义的 I/O 流对象有4个:cout 、cin 、cerr 和 clog,其中:cout 代表标准输出流,关联显示器;cin 代表标准输入流,关联键盘;cerr 和 clog 代表标准错误流,也关联显示器。iostream 和 using namespace std由于流对象的输入输出功能在 iostream 类库中实现,流对象则在名字空间 std原创 2020-07-28 13:37:04 · 1215 阅读 · 1 评论 -
【C++基础】12. 命名空间
命名空间的定义使用关键字 namespace,后跟命名空间的名称,下面的命名空间定义可以是定义一个新的命名空间,也可以是为已有的命名空间增加新的元素,如下所示:// 代码声明 }为了调用带有命名空间的函数或变量,需要在前面加上命名空间的名称,如下所示:// code 可以是变量或函数实例:// 第一个命名空间// 第二个命名空间// 调用第一个命名空间中的函数// 调用第二个命名空间中的函数return 0;原创 2023-11-16 23:02:08 · 679 阅读 · 0 评论 -
【C++基础】11. 引用
1. 引用 引用就是 已存在的变量或常量等声明的别名,不分配内存空间。必须在创建时被初始化(指向一个对象), 一旦初始化后就不能指向另一个对象。#include <iostream> using namespace std; int main (){ // 声明变量 int i; double d; // 声明引用变量 int& r = i; double& s = d; i = 5; .原创 2021-01-07 16:01:03 · 366 阅读 · 0 评论 -
指针数组、数组指针
文章目录【 1. 指针数组 】这两个都是 形容词adj+名词n 的形式,前面是修饰作用,主要看后面的两个字是什么,因此指针数组是数组,而数组指针是指针。【 1. 指针数组 】主要看后面的两个字是什么(前面是修饰作用),因此指针数组是数组,而数组指针是指针。...原创 2021-01-14 17:23:54 · 357 阅读 · 0 评论 -
【C++基础】10. 指针
指针是一个变量,其值为另一个变量的地址,即,内存位置的直接地址。不同数据类型的指针都是一个代表内存地址的长的十六进制数。唯一的不同是,指针所指向的变量或常量的数据类型不同。指针变量声明的一般形式为:type 是指针的基类型,它必须是一个有效的 C++ 数据类型;用来声明指针的星号 * 与乘法中使用的星号是相同的,但在这个语句中,星号用来指定一个变量是指针;var-name 是指针变量的名称。实例:有效的指针声明:int *ip;/* 一个整型的指针 */double *dp;原创 2023-10-15 22:51:59 · 3123 阅读 · 0 评论 -
【C++基础】9. 数组
两个依次定义的数据地址间的大小具体由编译器自行决定。原创 2023-10-13 16:50:48 · 218 阅读 · 0 评论 -
【C++基础】8. 函数
C++ 中的函数定义的一般形式如下:在 C++ 中,函数由一个函数头和一个函数主体组成。返回类型:一个函数可以返回一个值。return_type 是函数返回的值的数据类型。有些函数执行所需的操作而不返回值,在这种情况下,return_type 是关键字 void。函数名称:这是函数的实际名称。函数名和参数列表一起构成了函数签名。参数:参数就像是占位符。当函数被调用时,您向参数传递一个值,这个值被称为实际参数。参数列表包括函数参数的类型、顺序、数量。参数是可选的,也就是说,函数可能不包含参数。原创 2023-09-09 16:36:47 · 299 阅读 · 0 评论 -
【C++基础】7. 控制语句
【代码】【C++基础】9. 控制语句。原创 2023-09-09 15:02:57 · 516 阅读 · 0 评论 -
【C++基础】6. 运算符
【定义】程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算就是直接对整数在内存中的二进制位进行操作。【位运算符】范围:用于有符号和无符号的整型数,包括char short int long unsigned。基本位运算符共六种: ~ & | ^ << >>【基本位运算】...原创 2020-02-06 14:13:33 · 471 阅读 · 0 评论 -
【C++基础】5. 常量
在 C++ 中,有两种简单的定义常量的方式:1、使用 #define 预处理器。2、使用 const 关键字。把常量定义为大写字母形式,是一个很好的编程实践。原创 2023-09-05 22:43:34 · 807 阅读 · 0 评论 -
【C++基础】4. 变量
变量定义就是告诉编译器在何处创建变量的存储,以及如何创建变量的存储。变量定义指定一个数据类型,并包含了该类型的一个或多个变量的列表,如下所示:在这里,type 必须是一个有效的 C++ 数据类型,可以是 char、wchar_t、int、float、double、bool 或任何用户自定义的对象,variable_list 可以由一个或多个标识符名称组成,多个标识符之间用逗号分隔。原创 2023-09-05 22:16:54 · 529 阅读 · 0 评论 -
【C++基础】3. 数据类型
【代码】【C++学习笔记】数据类型。原创 2023-09-04 22:17:22 · 490 阅读 · 0 评论