本文作为入门文档,简要介绍C++
的非常基本的语法,后面章节会详细介绍C++
的各个语法。
C++
程序结构
C++
程序的基本结构包括头文件、命名空间、类和函数等。
下面我们通过Hello,World
来展示这些元素。
#include <iostream> // 包含标准输入输出流库
using namespace std; // 使用标准命名空间,避免每次调用标准库时都要加std::前缀int main() {cout << "Hello, World!" << endl; // 输出Hello, World!到控制台return 0; // 返回0表示程序正常结束
}
详解:
- 头文件:
#include <iostream>
指令包含了标准输入输出流库,通过它,程序可以使用cout
和cin
等对象。 - 命名空间:
using namespace std;
使得在程序中可以直接使用std
命名空间中的名字函数,而不需要每次都加上std::
前缀。这是为了方便,但在大型项目中,为了避免命名冲突,通常会显式地使用命名空间前缀。 - 主函数:
int main()
是程序的入口点,程序从这里开始执行。main
函数可以返回一个整数,通常返回0
表示程序正常结束,返回非零值表示出现错误或异常情况。 - 输出语句:
cout << "Hello, World!" << endl;
使用cout
对象向控制台输出字符串,endl
用于插入换行符并刷新输出缓冲区。
类与对象
我们都知道,C++
是一种支持面向对象的编程语言,类(class)是C++
中最重要的概念之一,通过类可以定义对象的属性和行为。
示例代码:
#include <iostream>
using namespace std;class Dog {
private:string name;int age;public:// 构造函数Dog(string dogName, int dogAge) : name(dogName), age(dogAge) {}// 成员函数,用于输出狗的信息void printInfo() {cout << "Dog name: " << name << ", Age: " << age << endl;}
};int main() {Dog myDog("Buddy", 5); // 创建一个Dog对象myDog.printInfo(); // 调用成员函数输出信息return 0;
}
详解:
- 类定义:
class Dog
定义了一个名为Dog
的类。 - 私有成员:
private:
部分定义了类的私有成员变量name
和age
。这些变量只能在类内部访问和修改。 - 公有成员:
public:
部分定义了类的公有成员函数printInfo()
和构造函数Dog(string dogName, int dogAge)
。构造函数用于初始化对象的状态,创建类对象时,会自动调用对应的构造函数。 - 对象创建:
Dog myDog("Buddy", 5);
创建了一个Dog
类的对象myDog
,并使用构造函数初始化了它的name
和age
属性。 - 成员函数调用:
myDog.printInfo();
调用了myDog
对象的printInfo()
成员函数,输出对象的信息。
函数与变量
函数封装代码块,它可以接收参数并返回结果。变量用于存储数据,可以是基本数据类型(如 int
、float
、char
等),也可以是我们自定义的类型(如类)。
示例代码:
#include <iostream>
using namespace std;// 函数声明
int add(int a, int b);int main() {int x = 10, y = 20;int sum = add(x, y); // 调用函数并存储结果cout << "Sum: " << sum << endl; // 输出结果return 0;
}// 函数定义
int add(int a, int b) {return a + b; // 返回两个整数的和
}
详解:
- 函数声明:在
main
函数之前声明了add
函数,这告诉编译器add
函数的存在,以便在main
函数中调用它。 - 变量声明与初始化:在
main
函数中声明并初始化了两个整数变量x
和y
。 - 函数调用:
int sum = add(x, y);
调用了add
函数,并将返回值赋给变量sum
。 - 函数定义:在
main
函数之后定义了add
函数,它接收两个整数参数并返回它们的和。
高级特性
C++ 提供了许多高级特性,如模板、异常处理、STL(标准库)等,这些特性极大地增强了 C++ 的灵活性。
通过模板,程序员可以编写与类型无关的代码。通过模板,可以创建泛型函数和类,这些函数和类可以处理任意类型的数据。
示例代码:
#include <iostream>
using namespace std;// 泛型函数模板
template <typename T>
T max(T a, T b) {return (a > b) ? a : b;
}int main() {int intMax = max(10, 20); // 调用泛型函数模板处理整数double doubleMax = max(10.5, 20.3); // 调用泛型函数模板处理浮点数cout << "Int max: " << intMax << endl;cout << "Double max: " << doubleMax << endl;return 0;
}
异常处理:C++ 提供了异常处理机制,程序可以在运行时检测和处理错误情况。通过使用 try
、catch
和 throw
关键字,可以操作异常相关能力。
STL(标准模板库):STL 是一组高效的、通用的模板类和函数,用于执行常见的编程任务,如sort
、map
、find
、set
等。STL 提供了容器(如 vector
、map
、set
等)、迭代器、算法和函数对象等组件。
代码规范
这里简单介绍几个C++
的编码规范:
- 使用 const 关键字:在函数参数和返回值前使用
const
关键字可以表明这些参数或返回值不会被修改,有助于提高代码的可读性和安全性。 - 避免使用全局变量:全局变量会导致代码难以维护和调试。尽量使用局部变量或类的成员变量来封装数据。
- 使用 RAII(资源获取即初始化):RAII 是一种管理资源(如内存、文件句柄、套接字等)的技术。通过将对象的生命周期与资源的生命周期绑定在一起,可以确保资源在不再需要时自动释放(非常有用)。
- 编写清晰的代码:使用有意义的变量名、函数名和注释来提高代码的可读性。避免使用过于复杂的代码结构,尽量保持代码简洁直观。
作者介绍
- 程序喵大人
- 35- 资深C/C++/Rust/Android/iOS客户端开发
- 10年大厂工作经验
- 嵌入式/人工智能/自动驾驶/音视频/游戏开发入门级选手
- 《C++20高级编程》《C++23高级编程》等多本书籍著译者
C++训练营
专为校招、社招3年工作经验的同学打造的1V1 C++训练营,量身定制学习计划、每日代码review,简历优化,面试辅导,一条龙服务,已帮助多名学员获得offer!训练营介绍