C++ 基本语法
当我们考虑一个 C++ 程序时,它可以被定义为一组通过调用彼此的方法进行通信的对象。现在让我们简要了解一下类、对象、方法和实例变量的含义。
-
对象 − 对象具有状态和行为。例如:狗既有状态(颜色、名称、品种),也有行为(摇尾巴、吠叫、进食)。对象是类的一个实例。
-
类 − 类可以定义为一个模板/蓝图,用于描述其类型对象支持的行为或状态。
-
方法 − 方法本质上是一种行为。一个类可以包含许多方法。方法中编写逻辑、操作数据并执行所有操作。
-
实例变量 − 每个对象都有其独特的实例变量集。对象的状态由赋给这些实例变量的值创建。
C++ 程序结构
C++ 程序的基本结构由以下部分组成:
- 头文件包含部分:在此部分中,我们将包含程序中将要使用的所有必需头文件及其函数。
- namespace 命名空间部分:在此部分中,我们将使用命名空间。
- main() 部分:在此部分中,我们编写主代码。 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++ 是一种区分大小写的编程语言。因此,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 |
三字母组合
一些字符有另一种表示形式,称为三字母组合序列。三字母组合是由三个字符组成的序列,用于表示单个字符,并且该序列始终以两个问号开头。
三字母组合在出现的任何位置都会展开,包括字符串字面量和字符字面量、注释以及预处理器指令中。
以下是最常用的三字母组合序列 -
三字母组合 | 替换 |
---|---|
??= | # |
??/ | \ |
??' | ^ |
??( | [ |
??) | ] |
??! | | |
??< | { |
??> | } |
??- | ~ |
并非所有编译器都支持三字母组合,由于其容易引起混淆,因此不建议使用。
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++ 支持三种类型的访问修饰符:private、public 和 protected。数据成员和成员函数的可访问性由访问修饰符定义。
- 数据成员和成员函数:类声明中使用的变量称为数据成员,成员函数是作用于数据成员的函数。
示例
根据上述示例,类声明的以下部分 –
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;