文章目录
1. 简介
C++ 是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程语言,支持过程化编程、面向对象编程和泛型编程,它综合了高级语言和低级语言的特点,它是 C 的一个超集,事实上,任何合法的 C 程序都是合法的 C++ 程序。
C++ 是由 Bjarne Stroustrup 于 1979 年在新泽西州美利山贝尔实验室开始设计开发的。C++ 进一步扩充和完善了 C 语言,最初命名为带类的C,后来在 1983 年更名为 C++。
注意:使用静态类型的编程语言是在编译时执行类型检查,而不是在运行时执行类型检查。
面向对象程序设计
- 封装(Encapsulation):
- 将数据和方法组合在一起,对外隐藏实现细节,只公开对外提供的接口。
- 提高安全性、可靠性和灵活性。
- 继承(Inheritance):
- 基于已有类创建新类,新类继承已有类的属性和方法,可以扩展和修改这些属性和方法。
- 提高代码的复用性和可扩展性。
- 多态(Polymorphism):
- 同一操作作用于不同对象,有不同的解释和实现。
- 通过接口或继承实现,提高代码的灵活性和可读性。
- 抽象(Abstraction):
- 提取共性特征,形成抽象类或接口。
- 使程序专注于高层次的设计和业务逻辑,而不关注具体实现细节。
标准的 C++ 由三个重要部分组成:
- 核心语言,提供了所有构件块,包括变量、数据类型和常量,等等。
- C++ 标准库,提供了大量的函数,用于操作文件、字符串等。
- 标准模板库(STL),提供了大量的方法,用于操作数据结构等。
2. 基本解释
C++程序可以定义为对象的集合,这些对象通过调用彼此的方法进行交互。
对象
- 定义: 对象具有状态和行为。
- 实例: 一只狗的状态包括颜色、名称、品种等,行为包括摇动、叫唤、吃等。对象是类的实例。
- 状态和行为: 对象的状态由其属性(变量)表示,行为由其方法(函数)表示。
类
- 定义: 类可以定义为描述对象行为和状态的模板或蓝图。
- 作用: 类提供了创建对象的基础结构。通过类可以定义对象的属性和方法。
方法
- 定义: 方法表示一种行为。
- 作用: 一个类可以包含多个方法。方法可以用来逻辑操作数据以及执行所有的动作。
- 示例: 类中定义的方法可以用来执行诸如计算、操作数据、更新状态等具体任务。
即时变量
- 定义: 每个对象都有其独特的即时变量。
- 作用: 对象的状态是由这些即时变量的值创建的。
- 属性: 即时变量是类中的属性,表示对象的具体特征。
示例解释
假设我们要创建一个表示“动物”的类,比如小狗:
class Dog {
public:
// 即时变量(属性)
std::string name;
std::string breed;
std::string color;
// 方法(行为)
void bark() {
std::cout << "Woof!" << std::endl;
}
void eat() {
std::cout << "Eating..." << std::endl;
}
void wagTail() {
std::cout << "Wagging tail..." << std::endl;
}
};
在这个类中:
- 类
Dog
定义了一个狗的模板。 - 即时变量
name
、breed
和color
定义了狗的状态。 - 方法
bark
、eat
和wagTail
定义了狗的行为。
我们可以创建 Dog
类的对象,并调用其方法:
Dog myDog;
myDog.name = "Buddy";
myDog.breed = "Golden Retriever";
myDog.color = "Golden";
myDog.bark(); // 输出:Woof!
myDog.eat(); // 输出:Eating...
myDog.wagTail(); // 输出:Wagging tail...
这些解释就是C++中的类和对象,以及如何通过方法来定义对象的行为和通过即时变量来定义对象的状态。
3. 程序结构
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() 是程序开始执行的地方 是一个单行注释。单行注释以 // 开头,在行末结束。
- 下一行 int main() 是主函数,程序从这里开始执行。
- 下一行 cout << "Hello World"; 会在屏幕上显示消息 "Hello World"。
- 下一行 return 0; 终止 main( )函数,并向调用进程返回值 0。
编译 & 执行 C++ 程序
- 打开一个文本编辑器,添加上述代码。
- 保存文件为 hello.cpp。
- 打开命令提示符,进入到保存文件所在的目录。
- 键入 'g++ hello.cpp ',输入回车,编译代码。如果代码中没有错误,命令提示符会跳到下一行,并生成 a.out 可执行文件。
- 现在,键入 ' a.out' 来运行程序,就可以看到屏幕上显示 ' Hello World '。
$ g++ hello.cpp
$ ./a.out
Hello World
4. 分号 和 语句块
在 C++ 中,分号是语句结束符。也就是说,每个语句必须以分号结束。它表明一个逻辑实体的结束。
例如,下面是三个不同的语句:
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);
5. 标识符
C++ 标识符是用来标识变量、函数、类、模块,或任何其他用户自定义项目的名称。一个标识符以字母 A-Z 或 a-z 或下划线 _ 开始,后跟零个或多个字母、下划线和数字(0-9)。
C++ 标识符内不允许出现标点字符,比如 @、& 和 %。C++ 是区分大小写的编程语言。因此,在 C++ 中,Manpower 和 manpower 是两个不同的标识符。
下面列出几个有效的标识符:
mohd zara abc move_name a_123
myname50 _temp j a23b9 retVal
6. 关键字
C++ 关键字是编程语言保留的单词,这些单词具有特定的含义,并在编译过程中被编译器识别和处理。由于关键字有特殊的用途,因此不能将它们用作标识符(变量名、函数名、类名等)。
完整的关键字解析看这篇文章:
7. 空格
只包含空格的行,被称为空白行,可能带有注释,C++ 编译器会完全忽略它。
在 C++ 中,空格用于描述空白符、制表符、换行符和注释。空格分隔语句的各个部分,让编译器能识别语句中的某个元素(比如 int)在哪里结束,下一个元素在哪里开始。因此,在下面的语句中:
int age;
在这里,int 和 age 之间必须至少有一个空格字符(通常是一个空白符),这样编译器才能够区分它们。另一方面,在下面的语句中:
fruit = apples + oranges; // 获取水果的总数
fruit 和 =,或者 = 和 apples 之间的空格字符不是必需的,但是为了增强可读性,您可以根据需要适当增加一些空格。
7. 注释
程序的注释是解释性语句,您可以在 C++ 代码中包含注释,这将提高源代码的可读性。所有的编程语言都允许某种形式的注释。
C++ 支持单行注释和多行注释。注释中的所有字符会被 C++ 编译器忽略。
C++ 注释一般有两种:
// 一般用于单行注释。
/* ... */ 一般用于多行注释。
#include <iostream>
using namespace std;
int main() {
// 这是一个注释
cout << "Hello World!";
return 0;
}
#include <iostream>
using namespace std;
int main() {
/* 这是注释 */
/* C++ 注释也可以
* 跨行
*/
cout << "Hello World!";
return 0;
}