C++知识点总结

发布时间:2023-05-22

一、基本语法

C语言是一门基于C语言的编程语言,因此C的基本语法与C语言相似,主要包括以下几个方面:

1. 数据类型

C++的数据类型可以分为基本数据类型和衍生数据类型两种。其中,基本数据类型包括整型、浮点型、字符型、布尔型和空类型,衍生数据类型包括数组、指针、结构体、共用体和枚举类型。

//示例代码:定义一个整型变量和一个指向整型变量的指针
int num = 10;
int *ptr = #

2. 控制语句

C++的控制语句包括顺序结构、分支结构和循环结构。其中,常用的分支结构有if语句和switch语句,常用的循环结构有while循环、do-while循环和for循环。

//示例代码:使用for循环输出1~10的数字
for(int i=1; i<=10; i++)
{
    cout << i << endl;
}

3. 函数

在C++中,可以通过定义函数来实现代码的复用。函数的定义包括函数类型、函数名、参数列表和函数体,其中参数列表可以为空,函数体可以返回一个值。

//示例代码:定义一个函数,返回两个数的和
int sum(int a, int b)
{
    return a + b;
}

二、面向对象编程

C++是一门面向对象编程的语言,支持封装、继承和多态等特性。

1. 封装

封装是C++面向对象编程中的一个重要特性,它可以将数据和操作数据的函数封装在一起,实现数据的保护和隐藏,避免数据的不合法访问。

//示例代码:定义一个封装了数据和访问函数的类
class Student {
private:
    string name;
    int age;
public:
    string getName() {
        return name;
    }
    void setName(string n) {
        name = n;
    }
    int getAge() {
        return age;
    }
    void setAge(int a) {
        age = a;
    }
};

2. 继承

继承是C++面向对象编程的另一个重要特性,它可以通过建立类之间的继承关系,实现代码的重用和灵活性的提高。

//示例代码:定义一个继承自Student类的Undergraduate类
class Undergraduate: public Student {
private:
    string major;
public:
    string getMajor() {
        return major;
    }
    void setMajor(string m) {
        major = m;
    }
};

3. 多态

多态是C++面向对象编程的另一个重要特性,它可以实现函数的重载和虚函数的运行时绑定,提高程序的灵活性和可扩展性。

//示例代码1:实现函数的重载
int sum(int a, int b)
{
    return a + b;
}
double sum(double a, double b)
{
    return a + b;
}
//示例代码2:定义一个含有虚函数的类
class Shape {
public:
    virtual double area() {
        return 0;
    }
};
class Circle: public Shape {
private:
    double r;
public:
    Circle(double radius): r(radius) {}
    virtual double area() {
        return r * r * 3.14;
    }
};
class Rectangle: public Shape {
private:
    double x, y;
public:
    Rectangle(double a, double b): x(a), y(b) {}
    virtual double area() {
        return x * y;
    }
};

三、STL库

STL(Standard Template Library)是C++标准库中的一个重要组成部分,提供了许多功能强大的容器类和算法,可以大大提高程序开发的效率。

1. 容器类

容器类是STL库中的一个重要概念,包括vector、list、map等多种类型,每种类型都有自己的特点和适用范围。

//示例代码:定义一个vector容器,并将元素插入其中
vector<int> v;
v.push_back(1);
v.push_back(2);
v.push_back(3);

2. 算法

算法是STL库中的另一个重要概念,包括排序、查找、复制、统计等多种操作,可以轻松实现对容器的操作。

//示例代码:使用算法对vector容器进行排序
vector<int> v;
v.push_back(3);
v.push_back(2);
v.push_back(1);
sort(v.begin(), v.end());

四、文件操作

C++支持对文件进行读写操作,可以实现对外部文件的读取和写入。

1. 文件读取

文件读取是C++操作文件的一种常用方式,可以打开文件并读取其中的内容。

//示例代码:打开文件,并读取其中的内容
ifstream in("test.txt");
if (!in.is_open()) {
    cout << "Open file failed!" << endl;
} else {
    string s;
    while (getline(in, s)) {
        cout << s << endl;
    }
    in.close();
}

2. 文件写入

文件写入是C++操作文件的另一种常用方式,可以打开文件并将内容写入其中。

//示例代码:打开文件,并将内容写入其中
ofstream out("test.txt", ofstream::app);
if (!out.is_open()) {
    cout << "Open file failed!" << endl;
} else {
    out << "hello world!";
    out.close();
}

五、异常处理

C++支持异常处理机制,可以通过捕获异常和抛出异常来处理程序中出现的异常情况。

1. 捕获异常

捕获异常是C++中对异常进行处理的一种方法,可以通过try-catch语句捕获可能发生异常的代码块,并进行处理。

//示例代码:捕获异常并进行处理
try {
    int a, b;
    cin >> a >> b;
    if (b == 0) {
        throw "Divisor can not be zero!";
    } else {
        cout << a / b << endl;
    }
} catch (const char* e) {
    cout << e << endl;
}

2. 抛出异常

抛出异常是C++中对异常进行处理的另一种方法,可以通过throw语句抛出异常,并在程序的其他位置进行处理。

//示例代码:抛出异常并在另一个函数中进行处理
int divide(int a, int b) {
    if (b == 0) {
        throw "Divisor can not be zero!";
    } else {
        return a / b;
    }
}
int main() {
    try {
        int a, b;
        cin >> a >> b;
        cout << divide(a, b) << endl;
    } catch (const char* e) {
        cout << e << endl;
    }
}