C++ 基本语法
当我们考虑一个 C++ 程序时,它可以被定义为通过调用彼此的方法来通信的对象集合。现在让我们简要了解一下 class、object、method 和 instance variable 的含义。
-
Object − Object 具有状态和行为。例如:一只狗有状态(颜色、名字、品种)以及行为(摇尾巴、吠叫、吃东西)。Object 是 class 的一个实例。
-
Class − Class 可以被定义为一个模板/蓝图,它描述了其类型对象所支持的行为或状态。
-
Methods − Method 基本上是一种行为。Class 可以包含许多 method。逻辑编写、数据操作以及所有动作执行都在 method 中进行。
-
Instance Variables − 每个 object 都有自己独特的 instance variables 集合。Object 的状态是由分配给这些 instance variables 的值创建的。
C++ 程序结构
C++ 程序的基本结构包括以下部分:
- 头文件包含部分:这是我们包含程序中将要使用的所有必需头文件的部分。
- Namespace 部分:这是我们使用 namespace 的部分。
- main() 部分:在此部分,我们编写主要代码。main() function 是任何 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 namespace。Namespace 是 C++ 的较新特性。
下一行 '// main() is where program execution begins.' 是 C++ 中的单行注释。单行注释以 // 开头,并在行尾结束。
行 int main() 是程序执行开始的 main function。
下一行 cout << "Hello World"; 会导致屏幕上显示 "Hello World" 消息。
下一行 return 0; 终止 main() function 并将其返回值为 0 给调用进程。
编译和执行 C++ 程序
让我们看看如何保存文件、编译并运行程序。请按照以下步骤操作 −
打开文本编辑器并添加上述代码。
将文件保存为:hello.cpp
打开命令提示符并转到保存文件的目录。
输入 'g++ hello.cpp' 并按回车键编译代码。如果代码中没有错误,命令提示符将进入下一行并生成 a.out 可执行文件。
现在,输入 'a.out' 来运行程序。
你将看到窗口上打印 ' Hello World '。
$ g++ hello.cpp $ ./a.out Hello World
确保 g++ 在你的路径中,并且你在包含 hello.cpp 文件的目录中运行它。
你可以使用 makefile 编译 C/C++ 程序。更多详情,请查看我们的 'Makefile Tutorial'。
C++ 中的分号和块
In C++, the semicolon is a statement terminator. That is, each individual statement must be ended with a semicolon. It indicates the end of one logical entity.
例如,以下是三个不同的语句 −
x = y; y = y + 1; add(x, y);
块是一组逻辑上相关的语句,用开大括号和闭大括号包围。例如 −
{
cout << "Hello World"; // 打印 Hello World
return 0;
}
C++ 不将行尾视为终止符。因此,在一行中放置语句的位置无关紧要。例如 −
x = y; y = y + 1; add(x, y);
与以下相同
x = y; y = y + 1; add(x, y);
C++ 标识符
C++ 标识符是用于标识变量、function、class、模块或其他任何用户定义项的名称。标识符以字母 A 到 Z 或 a 到 z 或下划线 (_) 开头,后跟零个或多个字母、下划线和数字 (0 到 9)。
C++ 不允许在标识符中使用标点符号,如 @、$ 和 %。C++ 是一种区分大小写的编程语言。因此,Manpower 和 manpower 在 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 |
三字符序列
少数字符有替代表示形式,称为三字符序列(trigraph sequence)。三字符序列是由三个字符组成的序列,表示单个字符,且序列总是以两个问号开头。
三字符序列会在任何出现的地方展开,包括字符串字面量和字符字面量中、在注释中以及在预处理器指令中。
以下是最常用的三字符序列 −
| Trigraph | Replacement |
|---|---|
| ??= | # |
| ??/ | \ |
| ??' | ^ |
| ??( | [ |
| ??) | ] |
| ??! | | |
| ??< | { |
| ??> | } |
| ??- | ~ |
并非所有编译器都支持三字符序列,而且由于其混淆性,不建议使用它们。
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 class 的对象
Numbers num;
// 设置值
num.setValues(10, 20);
// 显示值
num.display();
// 计算和
int sum = num.addition();
cout << "Sum of numbers: " << sum << endl;
return 0;
}
面向对象方法的 C++ 程序结构组成部分
面向对象方法的 C++ 程序结构的各个不同部分如下所示:
1. Class 声明
class 是对象的模板,或者我们可以说是产生对象的工厂。它是一种自定义数据类型,在其中为对象构建结构。
class 声明包含以下部分:
- 访问修饰符:C++ 支持三种访问修饰符:private、public 和 protected。数据成员和成员函数的可访问性由访问修饰符定义。
- 数据成员和成员函数:在 class 声明中使用的变量称为数据成员,成员函数是那些操作数据成员的函数。
示例
根据上面的示例,class 声明的以下部分 –
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 访问修饰符下定义的数据成员,即这些数据成员可以被 class 内的成员函数使用 –
private: int a; int b;
以下是 class 中使用的成员函数 –
void setValues(int x, int y); double addition(); void display();
2. 对象创建
在上面的示例中,以下语句是对象创建语句 –
Numbers num;