一、基本关键字(单词)
1. 数据类型相关
int含义
用于声明整数类型的变量。
示例
int age; // 声明一个名为 age 的整数变量age = 25; // 给 age 变量赋值为 25
理解:int 就像是一个容器,专门用来存放整数,在这个例子中,age 这个容器被用来存放代表年龄的整数 25。
float 和 double
含义
float 用于声明单精度浮点数变量,double 用于声明双精度浮点数变量,浮点数可以表示小数。
示例
float price = 9.99f; // 声明一个单精度浮点数变量 price 并初始化为 9.99double pi = 3.1415926; // 声明一个双精度浮点数变量 pi 并初始化为 3.1415926
理解:float 和 double 也是容器,但它们可以存放带有小数的数字。float 的精度相对较低,而 double 的精度更高,能表示更精确的小数。
char
含义
用于声明字符类型的变量。
示例char grade ='A'; // 声明一个字符变量 grade 并初始化为字符 'A'
理解:char 容器只能存放一个字符,这里 grade 存放了代表成绩等级的字符 'A'。
bool
含义
用于声明布尔类型的变量,布尔类型只有两个值:true 和 false。
示例
bool isStudent = true;// 声明一个布尔变量 isStudent 并初始化为 true
理解
bool 变量就像一个开关,只有开(true)和关(false)两种状态,这里 isStudent 表示是否是学生,值为 true 表示是学生。
2. 控制结构相关
if、else
含义
if 用于条件判断,如果条件为真,则执行 if 后面的代码块;else 用于 if 条件不成立时执行的代码块。
示例
int score = 85;if(score >=60){ std::cout <<"及格了"<< std::endl;}else{ std::cout <<"不及格"<< std::endl;}
理解:程序先判断 score 是否大于等于 60,如果是,则输出 “及格了”;如果不是,则执行 else 后面的代码,输出 “不及格”。
for
含义
用于创建循环,让一段代码重复执行一定的次数。
示例
for (int i = 0; i < 5; i++) { std::cout << i << std::endl;}
理解
for 循环有三个部分,初始化部分 int i = 0 声明并初始化一个循环变量 i;条件部分 i < 5 表示只要 i 小于 5,就会继续执行循环体;迭代部分 i++ 表示每次循环结束后,i 的值加 1。所以这个循环会依次输出 0 到 4。
while
含义
只要指定的条件为真,就会一直执行循环体中的代码。
示例
int num = 0;while (num < 3) { std::cout << num << std::endl; num++;}
理解:程序先判断 num 是否小于 3,如果是,则执行循环体中的代码,输出 num 的值并将 num 加 1,然后再次判断条件,直到条件不成立为止。
do-while
含义
与 while 循环类似,但 do-while 循环会先执行一次循环体,然后再判断条件。
示例
int count = 0;do { std::cout << count << std::endl; count++;} while (count < 2);
理解
无论条件是否成立,do 后面的代码块都会先执行一次,然后再判断 while 后面的条件,如果条件为真,则继续循环,否则结束循环。
3. 函数相关
void
含义
表示函数没有返回值。
示例
void printHello() { std::cout << "Hello!" << std::endl;}
理解:printHello 函数的作用是输出 “Hello!”,它不需要返回任何值,所以返回类型为 void。
return
含义
用于从函数中返回一个值,并结束函数的执行。
int add(int a, int b) { return a + b;}
理解
add 函数接受两个整数参数 a 和 b,将它们相加后通过 return 语句返回相加的结果。
二、常用语法句子
1. 变量声明与初始化
int number = 10; // 声明一个整数变量 number 并初始化为 10
理解
这是一种常见的变量声明和初始化方式,先指定变量的类型 int,然后给变量命名 number,最后用 = 给变量赋初始值 10。
2. 函数定义
int multiply(int x, int y) { return x * y;}
理解
这是一个函数定义,int 表示函数的返回类型,multiply 是函数名,(int x, int y) 是函数的参数列表,包含两个整数参数 x 和 y,函数体中使用 return 语句返回 x 和 y 的乘积。
3. 类定义
class Rectangle {private: int length; int width;public: Rectangle(int l,int w){ length = l; width = w; } intarea(){ return length * width; }};
理解
class 关键字用于定义一个类,这里定义了一个名为 Rectangle 的类。private 部分的成员变量 length 和 width 只能在类的内部访问;public 部分包含一个构造函数 Rectangle(int l, int w) 用于初始化对象的成员变量,还有一个成员函数 area() 用于计算矩形的面积。
三、标准库相关单词和语法
1. std 命名空间
含义
C++ 标准库中的所有标识符都定义在 std 命名空间中。
示例
#include <iostream>int main() { std::cout << "Hello, World!" << std::endl; return 0;}
理解
std::cout 是标准输出流对象,std::endl 用于换行,通过 std:: 前缀来访问 std 命名空间中的标识符。
2. 包含头文件
示例
#include <vector>
理解
#include 是预处理指令,用于将指定的头文件包含到当前源文件中。#include <vector> 表示包含 C++ 标准库中的 vector 头文件,这样就可以使用 std::vector 容器了。
四、内存管理相关关键字和语法
1. new 和 delete
关键字含义new
用于在堆上动态分配内存,并返回指向该内存的指针。
delete
用于释放 new 分配的内存,防止内存泄漏。
示例代码
#include <iostream>intmain(){ // 使用 new 动态分配一个整数的内存 int* ptr =newint; *ptr =10; std::cout <<"Value: "<<*ptr << std::endl; // 使用 delete 释放内存 delete ptr; return0;}
理解方式
在上述代码中,new int 会在堆上分配一个足够存储整数的内存块,并返回该内存块的起始地址,这个地址被赋值给指针 ptr。通过 *ptr = 10 可以向该内存块写入值。
当不再需要这块内存时,使用 delete ptr 释放它。如果不释放,这块内存将一直被占用,直到程序结束,造成内存泄漏。
2. new[] 和 delete[]
关键字含义new[]
用于在堆上动态分配数组内存。
delete[]
用于释放 new[] 分配的数组内存。
示例代码
#include <iostream>intmain(){ // 使用 new[] 动态分配一个包含 5 个整数的数组 int* arr =newint[5]; for(int i =0; i <5;++i){ arr[i]= i; } for(int i =0; i <5;++i){ std::cout << arr[i]<<" "; } std::cout << std::endl; // 使用 delete[] 释放数组内存 delete[] arr; return0;}
理解方式
new int[5]
会在堆上分配一块足够存储 5 个整数的连续内存块,并返回该内存块的起始地址给指针 arr。
通过循环可以给数组元素赋值并输出。使用 delete[] arr 来释放整个数组的内存,要注意必须使用 delete[] 而不是 delete,否则会导致未定义行为。
五、继承与多态相关关键字和语法
1. class 与继承
关键字含义
在 C++ 中,class 不仅可以定义独立的类,还能用于实现类之间的继承关系。
示例代码
#include <iostream>// 基类classShape{public: virtualvoiddraw(){ std::cout <<"Drawing a shape."<< std::endl; }};// 派生类classCircle:public Shape{public: voiddraw()override{ std::cout <<"Drawing a circle."<< std::endl; }};intmain(){ Shape* shapePtr =newCircle(); shapePtr->draw(); delete shapePtr; return0;}
理解方式
定义了一个基类 Shape 和一个派生类 Circle,Circle 通过 : public Shape 表示它继承自 Shape 类。
Shape
类中的 draw 函数被声明为 virtual,表示这是一个虚函数。Circle 类中的 draw 函数使用 override 关键字,明确表示它重写了基类的虚函数。
在 main 函数中,创建了一个 Circle 对象,并使用基类指针 shapePtr 指向它,调用 draw 函数时,会根据对象的实际类型(Circle)调用相应的函数,这就是多态的体现。
2. virtual 和 override
关键字含义virtual
用于声明虚函数,使得在通过基类指针或引用调用该函数时,能够根据对象的实际类型来决定调用哪个版本的函数。
override
用于派生类中重写基类的虚函数,编译器会检查是否真的重写了基类的虚函数,如果没有则会报错。
示例代码可参考上述继承示例
理解方式virtual
关键字为多态机制奠定了基础,它允许在运行时根据对象的实际类型来选择合适的函数实现。
override
关键字提高了代码的可读性和安全性,确保派生类正确地重写了基类的虚函数,避免因函数名拼写错误等问题导致的意外行为。
六、模板相关关键字和语法
1. template
关键字含义template
用于定义模板,模板是 C++ 实现泛型编程的重要工具,它可以让我们编写与类型无关的代码。
示例代码(函数模板)
#include <iostream>template<typenameT>T max(T a, T b){ return(a > b)? a : b;}intmain(){ int intMax =max(10,20); double doubleMax =max(3.14,2.71); std::cout <<"Max int: "<< intMax << std::endl; std::cout <<"Max double: "<< doubleMax << std::endl; return0;}
理解方式template <typename T>
声明了一个模板参数 T,T 可以代表任意类型。在 max 函数中,使用 T 作为参数类型和返回类型,这样函数就可以处理不同类型的数据。
在 main 函数中,分别调用 max 函数处理整数和双精度浮点数,编译器会根据实际传入的参数类型自动实例化出相应的函数版本。
2. 类模板
示例代码
#include <iostream>template<typenameT>classContainer{private: T value;public: Container(T val):value(val){} T getValue(){ return value; }};intmain(){ Container<int>intContainer(100); Container<double>doubleContainer(3.14); std::cout <<"Int value: "<< intContainer.getValue()<< std::endl; std::cout <<"Double value: "<< doubleContainer.getValue()<< std::endl; return0;}
理解方式
定义了一个类模板 Container,它有一个模板参数 T,类中使用 T 作为成员变量和函数返回值的类型。
在 main 函数中,通过 Container<int> 和 Container<double> 分别实例化出处理整数和双精度浮点数的类对象,这样就可以用同一个类模板处理不同类型的数据。
七、异常处理相关关键字和语法
1. try、catch 和 throw
关键字含义
try用于包裹可能会抛出异常的代码块。
catch用于捕获并处理 try块中抛出的异常。
throw用于抛出异常。
示例代码
#include <iostream>doubledivide(double a,double b){ if(b ==0){ throw"Division by zero!"; } return a / b;}intmain(){ try{ double result =divide(10,0); std::cout <<"Result: "<< result << std::endl; }catch(constchar* msg){ std::cerr <<"Error: "<< msg << std::endl; } return0;}
理解方式
在 divide 函数中,如果除数 b 为 0,则使用 throw 抛出一个字符串异常。
在 main 函数中,try 块中调用 divide 函数,当抛出异常时,程序会跳转到相应的 catch 块中,这里捕获的是 const char* 类型的异常,并输出错误信息。