
C++入门
文章平均质量分 61
心灵行者
这个作者很懒,什么都没留下…
展开
-
C++入门【39-C++内联函数】
如果想把一个函数定义为内联函数,则需要在函数名前面放置关键字 inline,在调用函数之前需要对函数进行定义。如果已定义的函数多于一行,编译器会忽略 inline 限定符。C++ 内联函数是通常与类一起使用。如果一个函数是内联的,那么在编译时,编译器会把该函数的代码副本放置在每个调用该函数的地方。对内联函数进行任何修改,都需要重新编译函数的所有客户端,因为编译器需要重新更换一次所有的代码,否则将会继续使用旧的函数。在类定义中的定义的函数都是内联函数,即使没有使用 inline 说明符。原创 2024-02-28 09:51:30 · 447 阅读 · 0 评论 -
C++入门【38-C++ 友元函数】
类的友元函数是定义在类外部,但有权访问类的所有私有(private)成员和保护(protected)成员。尽管友元函数的原型有在类的定义中出现过,但是友元函数并不是成员函数。友元可以是一个函数,该函数被称为友元函数;友元也可以是一个类,该类被称为友元类,在这种情况下,整个类及其所有成员都是友元。原创 2024-02-20 10:56:38 · 503 阅读 · 0 评论 -
C++入门【37-C++ 拷贝构造函数】
拷贝构造函数是一种特殊的构造函数,它在创建对象时,是使用同一类中之前创建的对象来初始化新创建的对象。如果在类中没有定义拷贝构造函数,编译器会自行定义一个。如果类带有指针变量,并有动态内存分配,则它必须有一个拷贝构造函数。在这里,obj 是一个对象引用,该对象是用于初始化另一个对象的。原创 2024-02-02 11:25:45 · 842 阅读 · 0 评论 -
C++入门【36-C++ 类构造函数 & 析构函数】
析构函数的名称与类的名称是完全相同的,只是在前面加了个波浪号(~)作为前缀,它不会返回任何值,也不能带有任何参数。析构函数有助于在跳出程序(比如关闭文件、释放内存等)前释放资源。构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void。构造函数可用于为某些成员变量设置初始值。默认的构造函数没有任何参数,但如果需要,构造函数也可以带有参数。类的析构函数是类的一种特殊的成员函数,它会在每次删除所创建的对象时执行。类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行。原创 2024-01-29 13:36:03 · 716 阅读 · 0 评论 -
C++入门【35-类访问修饰符】
数据封装是面向对象编程的一个重要特点,它防止函数直接访问类类型的内部成员。类成员的访问限制是通过在类主体内部对各个区域标记 public、private、protected 来指定的。关键字 public、private、protected 称为访问修饰符。一个类可以有多个 public、protected 或 private 标记区域。每个标记区域在下一个标记区域开始之前或者在遇到类主体结束右括号之前都是有效的。成员和类的默认访问修饰符是 private。原创 2024-01-23 17:22:35 · 1093 阅读 · 0 评论 -
C++入门【33-C++ 类 & 对象】
定义一个类需要使用关键字 class,然后指定类的名称,并类的主体是包含在一对花括号中,主体包含类的成员变量和成员函数。定义一个类,本质上是定义一个数据类型的蓝图,它定义了类的对象包括了什么,以及可以在这个对象上执行哪些操作。class Boxpublic:// 盒子的长度// 盒子的宽度// 盒子的高度关键字 public 确定了类成员的访问属性。在类对象作用域内,公共成员在类的外部是可访问的。您也可以指定类的成员为 private 或 protected,这个我们稍后会进行讲解。原创 2024-01-22 11:02:42 · 1030 阅读 · 0 评论 -
C++入门【34-C++类成员函数】
成员函数可以定义在类定义内部,或者单独使用范围解析运算符 :: 来定义。在类定义中定义的成员函数把函数声明为内联的,即便没有使用 inline 标识符。类的成员函数是指那些把定义和原型写在类定义内部的函数,就像类定义中的其他变量一样。类成员函数是类的一个成员,它可以操作类的任意对象,可以访问对象中的所有成员。在这里,需要强调一点,在 :: 运算符之前必须使用类名。Box1 的体积: 210 Box2 的体积: 1560。原创 2024-01-22 10:58:06 · 410 阅读 · 0 评论 -
C++入门【32-C++ 数据结构】
为了定义结构,您必须使用 struct 语句。type_name 是结构体类型的名称,member_type1 member_name1 是标准的变量定义,比如 int i;或者 float f;或者其他有效的变量定义。在结构定义的末尾,最后一个分号之前,您可以指定一个或多个结构变量,这是可选的。} book;原创 2024-01-19 11:04:38 · 392 阅读 · 0 评论 -
C++入门【31-C++ 基本的输入输出】
C++ 标准库提供了一组丰富的输入/输出功能,我们将在后续的章节进行介绍。本章将讨论 C++ 编程中最基本和最常见的 I/O 操作。C++ 的 I/O 发生在流中,流是字节序列。如果字节流是从设备(如键盘、磁盘驱动器、网络连接等)流向内存,这叫做输入操作。如果字节流是从内存流向设备(如显示屏、打印机、磁盘驱动器、网络连接等),这叫做输出操作。原创 2024-01-18 18:08:48 · 504 阅读 · 0 评论 -
C++入门【30-C++日期&时间】
C++ 标准库没有提供所谓的日期类型。C++ 继承了 C 语言用于日期和时间操作的结构和函数。为了使用日期和时间相关的函数和结构,需要在 C++ 程序中引用 头文件。有四个与时间相关的类型:clock_t、time_t、size_t 和 tm。类型 clock_t、size_t 和 time_t 能够把系统时间和日期表示为某种整数。下面是 C/C++ 中关于日期和时间的重要函数。所有这些函数都是 C/C++ 标准库的组成部分,您可以在 C++ 标准库中查看一下各个函数的细节。序号函数 & 描述1。原创 2024-01-15 11:22:12 · 1052 阅读 · 0 评论 -
C++入门【29-C++ 把引用作为返回值】
通过使用引用来替代指针,会使 C++ 程序更容易阅读和维护。C++ 函数可以返回一个引用,方式与返回一个指针类似。当函数返回一个引用时,则返回一个指向返回值的隐式指针。这样,函数就可以放在赋值语句的左边。原创 2024-01-11 19:11:13 · 609 阅读 · 0 评论 -
C++入门【28-C++ 把引用作为参数】
我们已经讨论了如何使用指针来实现引用调用函数。下面的实例使用了引用来实现引用调用函数。原创 2024-01-11 19:09:26 · 480 阅读 · 0 评论 -
C++入门【27-C++ 引用】
引用变量是一个别名,也就是说,它是某个已存在变量的另一个名字。一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量。原创 2024-01-10 10:17:51 · 758 阅读 · 0 评论 -
C++入门【26-C++ Null 指针】
在变量声明的时候,如果没有确切的地址可以赋值,为指针变量赋一个 NULL 值是一个良好的编程习惯。赋为 NULL 值的指针被称为空指针。NULL 指针是一个定义在标准库中的值为零的常量。原创 2024-01-10 10:10:30 · 485 阅读 · 0 评论 -
C++入门【25-C++ 从函数返回指针】
在上一章中,我们已经了解了 C++ 中如何从函数返回数组,类似地,C++ 允许您从函数返回指针。为了做到这点,您必须声明一个返回指针的函数,如下所示:另外,C++ 不支持在函数外返回局部变量的地址,除非定义局部变量为 static变量。原创 2024-01-09 10:08:55 · 494 阅读 · 0 评论 -
C++入门【24-C++ 传递指针给函数】
C++ 允许您传递指针给函数,只需要简单地声明函数参数为指针类型即可。原创 2024-01-09 10:06:17 · 500 阅读 · 0 评论 -
C++入门【23-C++ 指向指针的指针】
通常,一个指针包含一个变量的地址。当我们定义一个指向指针的指针时,第一个指针包含了第二个指针的地址,第二个指针指向包含实际值的位置。一个指向指针的指针变量必须如下声明,即在变量名前放置两个星号。指向指针的指针是一种多级间接寻址的形式,或者说是一个指针链。指针的指针就是将指针的地址存放在另一个指针里面。**pptr 值为:3000。var 值为 :3000。*ptr 值为:3000。原创 2024-01-08 09:26:17 · 591 阅读 · 1 评论 -
C++入门【22-C++ 指针数组】
在这里,把 ptr 声明为一个数组,由 MAX 个整数指针组成。因此,ptr 中的每个元素,都是一个指向 int 值的指针。可能有一种情况,我们想要让数组存储指向 int 或 char 或其他数据类型的指针。原创 2024-01-08 09:24:02 · 513 阅读 · 0 评论 -
C++入门【21-C++ 指针 vs 数组】
指针和数组是密切相关的。事实上,指针和数组在很多情况下是可以互换的。例如,一个指向数组开头的指针,可以通过使用指针的算术运算或数组索引来访问数组。原创 2024-01-05 17:13:10 · 445 阅读 · 0 评论 -
C++入门【20-C++ 指针的算术运算】
指针是一个用数值表示的地址。因此,您可以对指针执行算术运算。可以对指针进行四种算术运算:++、--、+、-。假设 ptr 是一个指向地址 1000 的整型指针,是一个 32 位的整数,让我们对该指针执行下列的算术运算:ptr++执行 ptr++ 后,指针 ptr 会向前移动 4 个字节,指向下一个整型元素的地址。这是由于指针算术运算会根据指针的类型和大小来决定移动的距离。原创 2024-01-05 17:09:22 · 1199 阅读 · 0 评论 -
C++入门【19-C++ Null 指针】
在大多数的操作系统上,程序不允许访问地址为 0 的内存,因为该内存是操作系统保留的。然而,内存地址 0 有特别重要的意义,它表明该指针不指向一个可访问的内存位置。因此,如果所有未使用的指针都被赋予空值,同时避免使用空指针,就可以防止误用一个未初始化的指针。很多时候,未初始化的变量存有一些垃圾值,导致程序难以调试。在变量声明的时候,如果没有确切的地址可以赋值,为指针变量赋一个 NULL 值是一个良好的编程习惯。NULL 指针是一个定义在标准库中的值为零的常量。ptr) /* 如果 ptr 为空,则完成 */原创 2024-01-03 17:19:42 · 484 阅读 · 0 评论 -
C++入门【18-C++ 指针】
指针是一个变量,其值为另一个变量的地址,即,内存位置的直接地址。就像其他变量或常量一样,您必须在使用指针存储其他变量地址之前,对其进行声明。指针变量声明的一般形式为:在这里,type 是指针的基类型,它必须是一个有效的 C++ 数据类型,var-name 是指针变量的名称。用来声明指针的星号 * 与乘法中使用的星号是相同的。但是,在这个语句中,星号是用来指定一个变量是指针。以下是有效的指针声明:int *ip;/* 一个整型的指针 */double *dp;/* 一个 double 型的指针 */原创 2024-01-03 17:16:48 · 1451 阅读 · 0 评论 -
C++入门【17-C++ 字符串】
因此,一个以 null 结尾的字符串,包含了组成字符串的字符。C++ 标准库提供了 string 类类型,支持上述所有的操作,另外还增加了其他更多的功能。C++ 编译器会在初始化数组时,自动把 \0 放在字符串的末尾。由于在数组的末尾存储了空字符,所以字符数组的大小比单词 RUNOOB 的字符数多一个。返回一个指针,指向字符串 s1 中字符串 s2 的第一次出现的位置。返回一个指针,指向字符串 s1 中字符 ch 的第一次出现的位置。连接字符串 s2 到字符串 s1 的末尾。返回字符串 s1 的长度。原创 2024-01-02 10:28:56 · 1096 阅读 · 0 评论 -
C++入门【16-C++ 从函数返回数组】
C++ 不允许返回一个完整的数组作为函数的参数。但是,您可以通过指定不带索引的数组名来返回一个指向数组的指针。原创 2023-12-26 20:49:46 · 628 阅读 · 0 评论 -
C++入门【14-C++ 指向数组的指针】
您可以先跳过本章,等了解了 C++ 指针的概念之后,再来学习本章的内容。如果您对 C++ 指针的概念有所了解,那么就可以开始本章的学习。数组名是指向数组中第一个元素的常量指针。因此,在下面的声明中:runoobAarray 是一个指向 &runoobAarray[0] 的指针,即数组 runoobAarray 的第一个元素的地址。因此,下面的程序片段把 p 赋值为 runoobAarray 的第一个元素的地址:double *p;使用数组名作为常量指针是合法的,反之亦然。原创 2023-12-24 17:02:22 · 435 阅读 · 0 评论 -
C++入门-【13-C++ 多维数组】
因此,数组中的每个元素是使用形式为 a[ i , j ] 的元素名称来标识的,其中 a 是数组名称,i 和 j 是唯一标识 a 中每个元素的下标。一个二维数组,在本质上,是一个一维数组的列表。其中,type 可以是任意有效的 C++ 数据类型,arrayName 是一个有效的 C++ 标识符。一个二维数组可以被认为是一个带有 x 行和 y 列的表格。如上所述,您可以创建任意维度的数组,但是一般情况下,我们创建的数组是一维数组和二维数组。二维数组中的元素是通过使用下标(即数组的行索引和列索引)来访问的。原创 2023-12-23 21:08:02 · 427 阅读 · 0 评论 -
C++入门【12-C++ 数组】
数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 numbers[0]、numbers[1]、...、numbers[99] 来代表一个个单独的变量。所有的数组都是以 0 作为它们第一个元素的索引,也被称为基索引,数组的最后一个索引是数组的总大小减去 1。在 C++ 中,数组是非常重要的,我们需要了解更多有关数组的细节。如果您省略掉了数组的大小,数组的大小则为初始化时元素的个数。C++ 支持多维数组。原创 2023-12-21 21:31:56 · 776 阅读 · 0 评论 -
C++入门【11-C++ 数字】
坚持下去吧原创 2023-12-19 21:41:35 · 805 阅读 · 0 评论 -
C++入门【10-C++ 函数】
在 C++ 中,函数由一个函数头和一个函数主体组成。原创 2023-12-18 21:07:06 · 881 阅读 · 0 评论 -
C++入门【9-C++循环】
由于构成循环的三个表达式中任何一个都不是必需的,您可以将某些条件表达式留空来构成一个无限循环。一般情况下,语句是顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类推。循环控制语句更改执行的正常序列。您可以在 while、for 或 do..while 循环内使用一个或多个循环。语句,程序流将继续执行紧接着 loop 或 switch 的下一条语句。当给定条件为真时,重复语句或语句组。除了它是在循环主体结尾测试条件外,其他与 while 语句类似。多次执行一个语句序列,简化管理循环变量的代码。原创 2023-12-17 16:54:20 · 413 阅读 · 0 评论 -
C++入门【8-C++ 运算符】
下表将按运算符优先级从高到低列出各个运算符,具有较高优先级的运算符出现在表格的上面,具有较低优先级的运算符出现在表格的下面。例如 x = 7 + 3 * 2,在这里,x 被赋值为 13,而不是 20,因为运算符 * 具有比 + 更高的优先级,所以首先计算乘法 3*2,然后再加上 7。某些运算符比其他运算符有更高的优先级,例如,乘除运算符具有比加减运算符更高的优先级。整个逗号表达式的值是以逗号分隔的列表中的最后一个表达式的值。复制并黏贴下面的 C++ 程序到 test.cpp 文件中,编译并运行程序。原创 2023-12-14 20:37:06 · 1003 阅读 · 0 评论 -
C++入门【7-C++ 存储类】
当您有多个文件且定义了一个可以在其他文件中使用的全局变量或函数时,可以在其他文件中使用 extern 来得到已定义的变量或函数的引用。还应注意的是,定义 'register' 并不意味着变量将被存储在寄存器中,它意味着变量可能存储在寄存器中,这取决于硬件和实现的限制。当您使用 'extern' 时,对于无法初始化的变量,会把变量名指向一个之前定义过的存储位置。变量在创建线程时创建,并在销毁线程时销毁。在 C++ 中,当 static 用在类数据成员上时,会导致仅有一个该成员的副本被类的所有对象共享。原创 2023-12-12 21:20:21 · 902 阅读 · 0 评论 -
C++入门【6-C++ 修饰符类型】
/ 定义长长整型变量 num1,初始值为 10000000000。// 定义双精度浮点数变量 num2,初始值为 2.71828。// 定义长整型变量 num2,初始值为 100000。// 定义有符号整型变量 num1,初始值为 -10。// 定义无符号整型变量 num2,初始值为 20。// 定义单精度浮点数变量 num1,初始值为 3.14。用于定义寄存器变量,表示该变量被频繁使用,可以存储在CPU的寄存器中,以提高程序的运行效率。// 定义短整型变量 num1,初始值为 10。原创 2023-12-11 20:25:10 · 964 阅读 · 0 评论 -
C++入门【5-C++ 常量】
使用 #define 预处理器。使用 const 关键字。#define 预处理器下面是使用 #define 预处理器定义常量的形式:int main()int area;return 0;当上面的代码被编译和执行时,它会产生下列结果:50。原创 2023-12-09 20:16:23 · 1111 阅读 · 0 评论 -
C++入门【4-C++ 变量作用域】
以上实例中,内部的代码块中声明了一个名为 a 的变量,它与外部作用域中的变量 a 同名。内部作用域中的变量 a 将覆盖外部作用域中的变量 a,在内部作用域中访问 a 时输出的是20,而在外部作用域中访问 a 时输出的是 10。在所有函数外部定义的变量(通常是在程序的头部),称为全局变量。注意:如果在内部作用域中声明的变量与外部作用域中的变量同名,则内部作用域中的变量将覆盖外部作用域中的变量。在程序中,局部变量和全局变量的名称可以相同,但是在函数内,局部变量的值会覆盖全局变量的值。原创 2023-12-08 09:49:14 · 419 阅读 · 0 评论 -
C++入门【3-C++ 变量类型】
变量定义就是告诉编译器在何处创建变量的存储,以及如何创建变量的存储。变量定义指定一个数据类型,并包含了该类型的一个或多个变量的列表,如下所示:在这里,type 必须是一个有效的 C++ 数据类型,可以是 char、wchar_t、int、float、double、bool 或任何用户自定义的对象,variable_list 可以由一个或多个标识符名称组成,多个标识符之间用逗号分隔。下面列出几个有效的声明:char c, ch;double d;行 int i, j, k;原创 2023-12-07 09:08:45 · 852 阅读 · 0 评论 -
C++入门【2-C++ 数据类型】
默认情况下,第一个名称的值为 0,第二个名称的值为 1,第三个名称的值为 2,以此类推。例如,在下面的枚举中,green 的值为 5。注意:long int 8 个字节,int 都是 4 个字节,早期的 C 编译器定义了 long int 占用 4 个字节,int 占用 2 个字节,新版的 C/C++ 标准兼容了早期的这一设定。双精度型占8 个字节(64位)内存空间,表示 -9,223,372,036,854,775,807 到 9,223,372,036,854,775,807 的范围。原创 2023-12-06 09:09:23 · 934 阅读 · 0 评论 -
C++入门【1-基本语法】
如果希望在源程序中有两个连续的问号,且不希望被预处理器替换,这种情况出现在字符常量、字符串字面值或者是程序注释中,可选办法是用字符串的自动连接:"...?空格分隔语句的各个部分,让编译器能识别语句中的某个元素(比如 int)在哪里结束,下一个元素在哪里开始。fruit 和 =,或者 = 和 apples 之间的空格字符不是必需的,但是为了增强可读性,您可以根据需要适当增加一些空格。以前为了表示键盘上没有的字符,这是必不可少的一种方法。三字符组就是用于表示另一个字符的三个字符序列,又称为三字符序列。原创 2023-12-05 21:25:51 · 835 阅读 · 0 评论