C++ 基础

C++ 主页 C++ 概述 C++ 环境设置 C++ 基本语法 C++ 注释 C++ Hello World C++ 省略命名空间 C++ 标记 C++ 常量/字面量 C++ 关键字 C++ 标识符 C++ 数据类型 C++ 数字数据类型 C++ 字符数据类型 C++ 布尔数据类型 C++ 变量类型 C++ 变量作用域 C++ 多变量 C++ 基本输入/输出 C++ 修饰符类型 C++ 存储类 C++ 数字 C++ 枚举 C++ 枚举类 C++ 引用 C++ 日期和时间

C++ 运算符

C++ 运算符 C++ 算术运算符 C++ 关系运算符 C++ 逻辑运算符 C++ 位运算符 C++ 赋值运算符 C++ sizeof 运算符 C++ 条件运算符 C++ 逗号运算符 C++ 成员运算符 C++ 强制类型转换运算符 C++ 指针运算符 C++ 运算符优先级 C++ 一元运算符

C++ 控制语句

C++ 决策语句 C++ if 语句 C++ if else 语句 C++ 嵌套 if 语句 C++ switch 语句 C++ 嵌套 switch语句 C++ 循环类型 C++ while 循环 C++ for 循环 C++ do while 循环 C++ Foreach 循环 C++ 嵌套循环 C++ break 语句 C++ continue 语句 C++ goto 语句

C++ 字符串

C++ 字符串 C++ 循环遍历字符串 C++ 字符串长度 C++ 字符串连接 C++ 字符串比较

C++ 函数

C++ 函数 C++ 多函数参数 C++ 递归函数 C++ 返回值 C++ 函数重载 C++ 函数重写 C++ 默认参数

C++ 数组

C++ 数组 C++ 多维数组 C++ 指向数组的指针 C++ 将数组传递给函数 C++ 从函数返回数组

C++ 结构 &联合

C++ 结构 C++ 联合

C++ 指针

C++ 指针 C++ 解引用 C++ 修改指针

C++ 类和对象

C++ 面向对象 C++ 类 &对象 C++ 类成员函数 C++ 类访问修饰符 C++ 静态类成员 C++ 静态数据成员 C++ 静态成员函数 C++ 内联函数 C++ this 指针 C++ 友元函数 C++ 指向类的指针

C++ 构造函数

C++ 构造函数 &析构函数 C++ 默认构造函数 C++ 参数化构造函数 C++ 复制构造函数 C++ 构造函数重载 C++ 带默认参数的构造函数 C++ 委托构造函数 C++ 构造函数初始化列表 C++ 使用构造函数动态初始化

C++ 继承

C++ 继承 C++ 多重继承 C++ 多级继承

C++ 面向对象

C++ 重载 C++ 多态性 C++ 抽象 C++ 封装 C++ 接口 C++ 虚函数 C++ 纯虚函数与抽象类

C++ 文件处理

C++ 文件和流 C++ 文件读取

C++ 进阶

C++ 异常处理 C++ 动态内存 C++ 命名空间 C++ 模板 C++ 预处理器 C++ 信号处理 C++ 多线程 C++ Web 编程 C++ 套接字编程 C++ 并发 C++ 高级概念 C++ Lambda 表达式 C++ unordered_multiset

C++ 实用资源

C++ 问答 C++ 快速指南 C++ 速查表 C++ STL 教程 C++ 标准库 C++ 实用资源 C++ 讨论


C++ 基本语法

当我们考虑一个 C++ 程序时,它可以被定义为一组通过调用彼此的方法进行通信的对象。现在让我们简要了解一下类、对象、方法和实例变量的含义。

  • 对象 − 对象具有状态和行为。例如:狗既有状态(颜色、名称、品种),也有行为(摇尾巴、吠叫、进食)。对象是类的一个实例。

  • − 类可以定义为一个模板/蓝图,用于描述其类型对象支持的行为或状态。

  • 方法 − 方法本质上是一种行为。一个类可以包含许多方法。方法中编写逻辑、操作数据并执行所有操作。

  • 实例变量 − 每个对象都有其独特的实例变量集。对象的状态由赋给这些实例变量的值创建。

C++ 程序结构

C++ 程序的基本结构由以下部分组成:

  • 头文件包含部分:在此部分中,我们将包含程序中将要使用的所有必需头文件及其函数。
  • namespace 命名空间部分:在此部分中,我们将使用命名空间。
  • ma​​in() 部分:在此部分中,我们编写主代码。 main() 函数是任何 C++ 编程代码的入口点,程序从这里开始执行。

要了解更多信息,请阅读:C++ Hello, World 程序

示例

让我们看一段打印 Hello World 的简单代码。

#include <iostream>
using namespace std;

// main() 是程序执行的起点。
int main() {
    cout << "Hello World"; // 打印 Hello World
    return 0;
}

示例说明

让我们看一下上述程序的各个部分 -

  • C++ 语言定义了几个头文件,其中包含对程序必要或有用的信息。对于此程序,需要头文件 <iostream>

  • using namespace std; 告诉编译器使用 std 命名空间。命名空间是 C++ 中相对较新的功能。

  • 下一行"// main() 是程序执行的开始位置。"是 C++ 中可用的单行注释。单行注释以 // 开头,并在行尾结束。

  • int main() 行是程序开始执行的主函数。

  • 下一行 cout << "Hello World"; 使消息"Hello World"显示在屏幕上。

  • 下一行 return 0; 终止 main() 函数,并使其将值 0 返回给调用进程。

编译和执行 C++ 程序

让我们看看如何保存文件、编译和运行程序。请按照以下步骤操作:

  • 打开文本编辑器并添加上述代码。

  • 将文件另存为:hello.cpp

  • 打开命令提示符并转到保存文件的目录。

  • 输入"g++ hello.cpp"并按回车键编译代码。如果代码中没有错误,命令提示符将跳转到下一行并生成一个.out可执行文件。

  • 现在,输入"a.out"运行程序。

  • 您将能够在窗口中看到"Hello World"的打印。

$ g++ hello.cpp
$ ./a.out
Hello World

确保 g++ 位于您的路径中,并且您正在包含文件 hello.cpp 的目录中运行它。

您可以使用 makefile 编译 C/C++ 程序。更多详细信息,请参阅我们的"Makefile 教程"

C++ 中的分号和块

在 C++ 中,分号是语句终止符。也就是说,每个单独的语句都必须以分号结尾。它表示一个逻辑实体的结束。

例如,以下是三个不同的语句 -

x = y;
y = y + 1;
add(x, y);

块是一组逻辑上相互连接的语句,由左右括号括起来。例如 -

{
   cout << "Hello World"; // prints Hello World
   return 0;
}

C++ 不将行尾识别为终止符。因此,语句在一行中的位置无关紧要。例如:-

x = y;
y = y + 1;
add(x, y);

等同于

x = y; y = y + 1; add(x, y);

C++ 标识符

C++ 标识符是用于标识变量、函数、类、模块或任何其他用户定义项的名称。标识符以字母 A 到 Z、a 到 z 或下划线 (_) 开头,后跟零个或多个字母、下划线和数字(0 到 9)。

C++ 不允许在标识符中使用标点符号,例如 @、$ 和 %。C++ 是一种区分大小写的编程语言。因此,Manpowermanpower 在 C++ 中是两个不同的标识符。

以下是一些可接受标识符的示例 -

mohd       zara    abc   move_name  a_123
myname50   _temp   j     a23b9      retVal

C++ 关键字

以下列表列出了 C++ 中的保留字。这些保留字不能用作常量、变量或任何其他标识符名称。

asm else new this
auto enum operator throw
bool explicit private true
break export protected try
case extern public typedef
catch false register typeid
char float reinterpret_cast typename
class for return union
const friend short unsigned
const_cast goto signed using
continue if sizeof virtual
default inline static void
delete int static_cast volatile
do long struct wchar_t
double mutable switch while
dynamic_cast namespace template  

三字母组合

一些字符有另一种表示形式,称为三字母组合序列。三字母组合是由三个字符组成的序列,用于表示单个字符,并且该序列始终以两个问号开头。

三字母组合在出现的任何位置都会展开,包括字符串字面量和字符字面量、注释以及预处理器指令中。

以下是最常用的三字母组合序列 -

三字母组合 替换
??= #
??/ \
??' ^
??( [
??) ]
??! |
??< {
??> }
??- ~

并非所有编译器都支持三字母组合,由于其容易引起混淆,因此不建议使用。

C++ 中的空格

仅包含空格(可能带有注释)的行称为空行,C++ 编译器会完全忽略它。

空格是 C++ 中用于描述空格、制表符、换行符和注释的术语。空格将语句的各个部分分隔开来,并使编译器能够识别语句中一个元素(例如 int)的结束位置和下一个元素的开始位置。

语句 1

int age;

在上述语句中,int 和 age 之间必须至少有一个空格(通常为空格),以便编译器能够区分它们。

语句 2

fruit = apples + oranges; // 获取水果总数

在上述语句 2 中,fruit 和 = 之间以及 = 和 apples 之间不需要空格,但如果您希望提高可读性,可以添加一些空格。

面向对象方法的 C++ 程序结构

C++ 还支持面向对象编程方法和过程式编程方法。

示例

此示例演示了基于面向对象方法的 C++ 程序。

#include <iostream>
using namespace std;

class Numbers {
 private:
  int a;
  int b;

 public:
    // 设置值的函数
    void setValues(int x, int y) {
        a = x;
        b = y;
    }
    
    // 将这些数字相加的函数
    double addition() { return a + b; }
    
    // 显示值的函数
    void display() { cout << "a: " << a << ", b: " << b << endl; }
};

int main() {
    // 创建 Numbers 类的对象
    Numbers num;
    
    // 设置值
    num.setValues(10, 20);
    
    // 显示值
    num.display();
    
    // 计算加法
    int sum = num.addition();
    cout << "Sum of numbers: " << sum << endl;
    
    return 0;
}

面向对象方法的 C++ 程序结构组成部分

面向对象方法的 C++ 程序结构各组成部分如下:

1. 类声明

是对象的模板,或者我们可以说类是生产对象的工厂。它是一种自定义数据类型,用于为对象构建结构体。

类声明包含以下部分:

  • 访问修饰符:C++ 支持三种类型的访问修饰符:privatepublicprotected。数据成员和成员函数的可访问性由访问修饰符定义。
  • 数据成员和成员函数:类声明中使用的变量称为数据成员,成员函数是作用于数据成员的函数。

示例

根据上述示例,类声明的以下部分 –

class Numbers {
 private:
  int a;
  int b;

 public:
    // 设置值的函数
    void setValues(int x, int y) {
        a = x;
        b = y;
    }
    
    // 将这些数字相加的函数
    double addition() { return a + b; }
    
    // 显示值的函数
    void display() { cout << "a: " << a << ", b: " << b << endl; }
};

以下是在 private 访问修饰符下定义的数据成员,也就是说,这些数据成员可以被类中的成员函数使用 –

private:
    int a;
    int b;

以下是类中使用的成员函数 –

void setValues(int x, int y);
double addition();
void display();

2. 对象创建

在上面的例子中,以下语句是对象创建语句 −

Numbers num;