1. 概述
C++ 是一种面向对象的编程语言,它是 C 语言的扩展版,由 Bjarne Stroustrup 创造。与其他现有的编程语言相比,C++ 具有以下优点:
高效:C++ 是一种编译型语言,可以直接编译成机器码运行,因此执行效率高。
可移植性:可以在不同操作系统上编写代码,只需要在每个操作系统上进行编译即可。
丰富的数据类型:C++ 提供了丰富的数据类型,包括整型、浮点型、字符型等,同时还支持自定义的数据类型。
模块化编程:通过使用类和函数,可以将代码分解为多个模块,便于维护和扩展。
2. 基本语法
2.1. 变量
在 C++ 中,变量必须先定义,然后才能使用。定义变量时需要指定变量的类型和名称,例如:
int age = 18;
float temperature = 36.5;
char grade = 'A';
在上面的代码中,我们定义了三个变量:一个整型变量 age,一个浮点型变量 temperature,和一个字符型变量 grade。
除了基本数据类型之外,C++ 还支持自定义数据类型。例如,我们可以通过定义 struct 或 class 来定义一个新的数据类型:
struct Person {
std::string name;
int age;
};
Person p1 = {"Tom", 18};
在上面的代码中,我们定义了一个 Person 结构体,它由两个成员变量组成:一个字符串类型的 name 和一个整型类型的 age。我们还定义了一个 p1 变量,它的类型是 Person,并初始化了它的值。
2.2. 运算符
C++ 支持多种运算符,包括算术运算符、关系运算符、逻辑运算符等。下面是一些常用的运算符示例:
算术运算符:+
、-
、*
、/
、%
(取模)。
关系运算符:==
、!=
、>
、<
、>=
、<=
。
逻辑运算符:&&
(与)、||
(或)、!
(非)。
除了上述运算符之外,C++ 还支持位运算符、赋值运算符、条件运算符等。具体可以参考相关文档。
2.3. 控制语句
C++ 支持各种流程控制语句,包括条件语句、循环语句和跳转语句。
2.3.1. 条件语句
条件语句包括 if 语句和 switch 语句。
if 语句的一般形式如下:
if (condition) {
// do something
}
其中,condition 是一个条件表达式,当它的值为 true 时执行代码块中的内容。if 语句还支持 else 和 else if 子句,例如:
if (condition1) {
// do something
} else if (condition2) {
// do something else
} else {
// do something else
}
switch 语句用于根据不同的值执行不同的操作。它的一般形式如下:
switch (expression) {
case value1:
// do something
break;
case value2:
// do something else
break;
default:
// do something else
}
其中,expression 是一个表达式。
2.3.2. 循环语句
循环语句包括 for、while 和 do-while 三种语句。
for 循环的一般形式如下:
for (initialization; condition; update) {
// do something
}
其中,initialization 是用来初始化变量的代码,condition 是用来检测的条件,update 是在每次循环后更新变量的代码。
while 循环和 do-while 循环的一般形式如下:
while (condition) {
// do something
}
do {
// do something
} while (condition);
2.3.3. 跳转语句
跳转语句包括 break、continue 和 goto 三种语句。
break 语句用于跳出循环。
continue 语句用于跳过循环中的某次迭代。
goto 语句用于跳转到程序中的标记语句。
3. 类和对象
在 C++ 中,类是一种用户自定义的类型,它由变量和函数组成。可以通过类来创建对象,对象是类的一个实例,它包含了类中所有的变量和函数。
3.1. 类的定义
定义一个类需要使用关键字 class,例如:
class Person {
public:
std::string name;
int age;
void sayHello() {
std::cout << "Hello, my name is " << name << "." << std::endl;
}
};
在上面的代码中,我们定义了一个 Person 类,它包含了两个成员变量:name 和 age,以及一个 sayHello 函数。
3.2. 对象的创建与使用
在 C++ 中,可以通过以下方式来创建一个对象:
Person p1;
p1.name = "Tom";
p1.age = 18;
p1.sayHello();
在上面的代码中,我们创建了一个 p1 对象,并设置了它的 name 和 age 属性,并调用了它的 sayHello 函数。
3.3. 访问控制
C++ 中可以使用 public、private 和 protected 三种访问修饰符来限制成员变量和成员函数的访问权限。
public:可以在类的内部和外部访问。
private:只能在类的内部访问。
protected:只能在类的内部和派生类(继承类)中访问。
以下是一个使用访问修饰符的示例:
class Rectangle {
private:
double width;
double height;
public:
Rectangle(double w, double h) {
width = w;
height = h;
}
double getArea() {
return width * height;
}
};
int main() {
Rectangle r1(2.0, 3.0);
std::cout << r1.getArea() << std::endl;
// std::cout << r1.width << std::endl; // error: 'width' is private
return 0;
}
在上面的代码中,我们定义了一个 Rectangle 类,它包含了 width 和 height 两个私有成员变量,以及构造函数和 getArea 函数。在 main 函数中,我们创建了一个 r1 对象,并调用了它的 getArea 函数。尝试访问 r1 的 width 属性会导致编译错误,因为该属性是私有的。
4. 异常处理
在编程中,有时候会出现错误或异常情况,此时可以使用异常处理机制。C++ 中使用 try-catch 块来处理异常。
4.1. 抛出异常
可以通过 throw
关键字来抛出一个异常,例如:
double divide(double x, double y)
{
if (y == 0) {
throw "Division by zero condition!";
}
return x / y;
}
在上面的代码中,我们定义了一个 divide 函数,当除数为 0 时会抛出一个类型为 const char* 的异常。
4.2. 捕获异常
可以通过 try-catch
块来捕获异常,例如:
try {
double result = divide(10.0, 0.0);
std::cout << result << std::endl;
}
catch (const char* msg) {
std::cerr << msg << std::endl;
}
在上面的代码中,我们尝试调用 divide 函数,如果函数抛出异常,我们就会捕获到它,并显示错误消息。
5. 总结
本文介绍了 C++ 的基础语法,包括变量、运算符、控制语句、类和对象、异常处理等内容。熟悉 C++ 的基础语法是编写高效、可维护的程序的必备基础。