C++全方位介绍

发布时间:2023-05-22

一、基本概念

C++是一种面向对象的编程语言,由Bjarne Stroustrup在20世纪80年代开发。它扩展自C语言,并添加了类和其他功能,使得它更适合大型软件项目的开发。C++同时也是一种高效的语言,因为它可以直接访问计算机的底层资源。

作为一种编程语言,C++支持多种编程范式,包括面向对象编程、泛型编程和函数式编程。它也被广泛用于编写操作系统、数据库程序、大型游戏等需要高效性能和耐用性的应用程序。

下面是一个简单的C++程序示例:

#include <iostream>

using namespace std;

int main() {
    cout << "Hello, world!";
    return 0;
}

二、面向对象编程

C++是一种面向对象编程(OOP)语言。在C++中,类是一种在数据和方法之间提供了关联的自定义数据类型。类可以实例化为对象,这些对象可以调用类中定义的方法。

下面是一个简单的类定义示例:

class Person {
public:
    Person(string name, int age) {
        this->name = name;
        this->age = age;
    }
    
    void setName(string name) {
        this->name = name;
    }
    
    void setAge(int age) {
        this->age = age;
    }
    
    string getName() const {
        return name;
    }
    
    int getAge() const {
        return age;
    }
    
private:
    string name;
    int age;
};

上面的代码定义了一个名为Person的类,该类具有名称和年龄属性,以及一个构造函数和一些不同访问级别的方法。这个类也可以用以下方式创建对象:

Person person("Alice", 25);

三、模板和泛型编程

C++提供了一种叫做模板的特性,它允许开发者写泛型代码,即代码可以适用于多种数据类型。通过模板,可以实现一个算法,用于不同类型的数据进行操作,而无需编写多个算法实现。

下面是一个使用C++模板实现的简单快速排序算法:

template <typename T>
void quicksort(T arr[], int left, int right) {
    int i = left, j = right;
    T tmp;
    T pivot = arr[(left + right) / 2];
 
    while (i <= j) {
        while (arr[i] < pivot)
            i++;
        while (arr[j] > pivot)
            j--;
        if (i <= j) {
            tmp = arr[i];
            arr[i] = arr[j];
            arr[j] = tmp;
            i++;
            j--;
        }
    };
 
    if (left < j)
        quicksort(arr, left, j);
    if (i < right)
        quicksort(arr, i, right);
}

上述代码实现了针对任意数据类型的快速排序算法,通过模板可以实现对任意类型的排序操作。

四、STL容器和算法

C++标准库提供了一组内置容器和算法,这被称为STL(Standard Template Library)。这些容器和算法的实现经过优化,具有高效性能和可靠性,通常可以满足大多数开发需求。常见的STL容器包括vector、list、set和map,其中vector是一个动态数组,list是一个双向链表,set和map是关联数组。

下面是一个使用vector和for_each算法的简单示例:

#include <vector>
#include <algorithm>
#include <iostream>

using namespace std;

int main() {
    vector<int> vec = {1, 2, 3, 4, 5};
    for_each(vec.begin(), vec.end(), [](int i) {
        cout << i << " ";
    });
    return 0;
}

上述代码创建了一个含有5个整数的vector,然后使用for_each算法输出其中的每一个元素。

五、并发编程和多线程

C++通过标准库提供了一组多线程API,这使得并发编程成为可能。使用多线程可以同时处理多个任务,从而提高程序的效率和响应能力。需要注意的是,在多线程编程中,需要特别注意线程安全问题。

下面是一个使用C++多线程实现的简单示例:

#include <iostream>
#include <thread>

using namespace std;

void print() {
    cout << "Hello, world!";
}

int main() {
    thread t1(print);
    t1.join();
    return 0;
}

上述代码创建了一个新的线程,并在该线程中调用print函数,最后使用join函数将线程加入到主线程中,等待线程执行完毕。