C++ 基本语法
C++ 基本语法 C++ 程序可以定义为对象的集合,这些对象通过调用彼此的方法进行交互。现在让我们简要地看一下什么是类、对象,方法、即时变量。 对象 - 对象具有状态和行为。例如:一只狗的状态 - 颜色、名称、品种,行为 - 摇动、叫唤、吃。对象是类的实例。类 - 类可以定义为描述对象行为/状态的模板/蓝图。方法 - 从基本上说,一个方法表示一种行为。一个类可以包含多个方法。可以在方法中写入逻辑、操作数据以及执行所有的动作。即时变量 - 每个对象都有其独特的即时变量。对象的状态是由这些即时变量的值创建的。 C++ 程序结构让我们看一段简单的代码,可以输出单词 Hello World。 实例 #include using namespace std; // main() 是程序开始执行的地方int main(){cout << “Hello World”; // 输出 Hello Worldreturn 0;} 接下来我们讲解一下上面这段程序: C++...
C++ 基本的输入输出
C++ 基本的输入输出 C++ 标准库提供了一组丰富的输入/输出功能,我们将在后续的章节进行介绍。本章将讨论 C++ 编程中最基本和最常见的 I/O 操作。C++ 的 I/O 发生在流中,流是字节序列。如果字节流是从设备(如键盘、磁盘驱动器、网络连接等)流向内存,这叫做输入操作。如果字节流是从内存流向设备(如显示屏、打印机、磁盘驱动器、网络连接等),这叫做输出操作。 I/O 库头文件下列的头文件在 C++ 编程中很重要。 头文件函数和描述该文件定义了 cin、cout、cerr 和 clog 对象,分别对应于标准输入流、标准输出流、非缓冲标准错误流和缓冲标准错误流。该文件通过所谓的参数化的流操纵器(比如 setw 和 setprecision),来声明对执行标准化 I/O 有用的服务。该文件为用户控制的文件处理声明服务。我们将在文件和流的相关章节讨论它的细节。 标准输出流(cout)预定义的对象 cout 是 iostream 类的一个实例。cout 对象”连接”到标准输出设备,通常是显示屏。cout 是与流插入运算符...
C++ 命名空间
C++ 命名空间假设这样一种情况,当一个班上有两个名叫 Zara 的学生时,为了明确区分它们,我们在使用名字之外,不得不使用一些额外的信息,比如他们的家庭住址,或者他们父母的名字等等。同样的情况也出现在 C++ 应用程序中。例如,您可能会写一个名为 xyz() 的函数,在另一个可用的库中也存在一个相同的函数 xyz()。这样,编译器就无法判断您所使用的是哪一个 xyz() 函数。因此,引入了命名空间这个概念,专门用于解决上面的问题,它可作为附加信息来区分不同库中相同名称的函数、类、变量等。使用了命名空间即定义了上下文。本质上,命名空间就是定义了一个范围。我们举一个计算机系统中的例子,一个文件夹(目录)中可以包含多个文件夹,每个文件夹中不能有相同的文件名,但不同文件夹中的文件可以重名。 定义命名空间命名空间的定义使用关键字 namespace,后跟命名空间的名称,如下所示: namespace namespace_name {// 代码声明} 为了调用带有命名空间的函数或变量,需要在前面加上命名空间的名称,如下所示: name::code; ...
C++ 变量类型
C++ 变量类型变量其实只不过是程序可操作的存储区的名称。在 C++ 中,有多种变量类型可用于存储不同种类的数据。C++ 中每个变量都有指定的类型,类型决定了变量存储的大小和布局,该范围内的值都可以存储在内存中,运算符可应用于变量上。变量的名称可以由字母、数字和下划线字符组成。它必须以字母或下划线开头。大写字母和小写字母是不同的,因为 C++ 是大小写敏感的。基于前一章讲解的基本类型,有以下几种基本的变量类型,将在下一章中进行讲解: 类型描述bool布尔类型,存储值 true 或 false,占用 1 个字节。char字符类型,用于存储 ASCII 字符,通常占用 1 个字节。int整数类型,通常用于存储普通整数,通常占用 4 个字节。float单精度浮点值,用于存储单精度浮点数。单精度是这样的格式,1 位符号,8 位指数,23 位小数,通常占用4个字节。 double双精度浮点值,用于存储双精度浮点数。双精度是 1 位符号,11 位指数,52 位小数,通常占用 8 个字节。 void表示类型的缺失。wchar_t宽字符类型,用于存储更大范围的字符,通常占用 2 个或 4...
C++ 变量作用域
C++...
C++ 动态内存
C++ 动态内存了解动态内存在 C++ 中是如何工作的是成为一名合格的 C++ 程序员必不可少的。C++ 程序中的内存分为两个部分: 栈:在函数内部声明的所有变量都将占用栈内存。堆:这是程序中未使用的内存,在程序运行时可用于动态分配内存。 很多时候,您无法提前预知需要多少内存来存储某个定义变量中的特定信息,所需内存的大小需要在运行时才能确定。在 C++ 中,您可以使用特殊的运算符为给定类型的变量在运行时分配堆内的内存,这会返回所分配的空间地址。这种运算符即 new 运算符。如果您不再需要动态分配的内存空间,可以使用 delete 运算符,删除之前由 new 运算符分配的内存。new 和 delete 运算符下面是使用 new 运算符来为任意的数据类型动态分配内存的通用语法: new data-type; 在这里,data-type 可以是包括数组在内的任意内置的数据类型,也可以是包括类或结构在内的用户自定义的任何数据类型。让我们先来看下内置的数据类型。例如,我们可以定义一个指向 double 类型的指针,然后请求内存,该内存在执行时被分配。我们可以按照下面的语句使用 new...
C++ 判断
C++ 判断 判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的)。下面是大多数编程语言中典型的判断结构的一般形式: 判断语句C++ 编程语言提供了以下类型的判断语句。点击链接查看每个语句的细节。 语句描述if 语句一个 if 语句 由一个布尔表达式后跟一个或多个语句组成。if…else 语句一个 if 语句 后可跟一个可选的 else 语句,else 语句在布尔表达式为假时执行。嵌套 if 语句您可以在一个 if 或 else if 语句内使用另一个 if 或 else if 语句。switch 语句一个 switch 语句允许测试一个变量等于多个值时的情况。嵌套 switch 语句您可以在一个 switch 语句内使用另一个 switch 语句。 ? : 运算符我们已经在前面的章节中讲解了 条件运算符 ? :,可以用来替代 if…else 语句。它的一般形式如下: Exp1 ? Exp2 : Exp3; 其中,Exp1、Exp2 和 Exp3 是表达式。请注意,冒号的使用和位置。? 表达式的值是由...
C++ 函数
C++ 函数 函数是一组一起执行一个任务的语句。每个 C++ 程序都至少有一个函数,即主函数 main() ,所有简单的程序都可以定义其他额外的函数。您可以把代码划分到不同的函数中。如何划分代码到不同的函数中是由您来决定的,但在逻辑上,划分通常是根据每个函数执行一个特定的任务来进行的。函数声明告诉编译器函数的名称、返回类型和参数。函数定义提供了函数的实际主体。C++ 标准库提供了大量的程序可以调用的内置函数。例如,函数 strcat() 用来连接两个字符串,函数 memcpy() 用来复制内存到另一个位置。函数还有很多叫法,比如方法、子例程或程序,等等。 定义函数C++ 中的函数定义的一般形式如下: return_type function_name( parameter list ){body of the function} 在 C++ 中,函数由一个函数头和一个函数主体组成。下面列出一个函数的所有组成部分: 返回类型:一个函数可以返回一个值。return_type 是函数返回的值的数据类型。有些函数执行所需的操作而不返回值,在这种情况下,return_type 是关键字...
C++ 内存管理库 <new>
C++ 内存管理库 C++ 是一种功能强大的编程语言,它提供了丰富的标准库来帮助开发者更高效地编写代码。在 C++ 中, 是一个非常重要的头文件,它包含了用于动态内存分配的函数和异常类型。动态内存分配允许程序在运行时请求内存,这在处理不确定大小的数据结构时非常有用。 头文件定义了以下几个关键组件: new 运算符:用于动态分配内存。delete 运算符:用于释放动态分配的内存。nothrow 运算符:用于在内存分配失败时不抛出异常。std::bad_alloc 异常:当内存分配失败时抛出。 语法使用 new 运算符new 运算符用于在堆上分配内存。其基本语法如下:pointer new (type [, initializer]); pointer 是指向分配的内存的指针。type 是要分配的对象的类型。initializer 是一个可选的初始化表达式。 使用 delete 运算符delete 运算符用于释放之前使用 new 分配的内存。其基本语法如下:delete pointer; pointer 是之前使用 new...
C++ 内存管理库 <memory>
C++ 内存管理库 是 C++ 标准库中的一个头文件,它包含了用于动态内存管理的模板和函数。在 C++ 中,内存管理是一个重要的概念。动态内存管理允许程序在运行时分配和释放内存,这在处理不确定大小的数据结构时非常有用。然而,不正确的内存管理可能导致内存泄漏、野指针等问题。 头文件提供了智能指针等工具,帮助开发者更安全地管理动态内存。智能指针智能指针是 头文件中的核心内容。它们是 C++11 引入的特性,用于自动管理动态分配的内存。智能指针的主要类型有: std::unique_ptr:独占所有权的智能指针,同一时间只能有一个 unique_ptr 指向特定内存。std::shared_ptr:共享所有权的智能指针,多个 shared_ptr 可以指向同一内存,内存在最后一个 shared_ptr 被销毁时释放。std::weak_ptr:弱引用智能指针,用于与 shared_ptr 配合使用,避免循环引用导致的内存泄漏。 实例使用 std::unique_ptr实例#include #include class MyClass {public: void...