问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

一篇文章掌握C++的80%:现代C++快速入门

创作时间:
作者:
@小白创作中心

一篇文章掌握C++的80%:现代C++快速入门

引用
1
来源
1.
http://www.360doc.com/content/24/0509/07/42649903_1122764544.shtml

C++是一种静态类型、编译式、通用的、多范式的编程语言。它是一种高性能的语言,广泛应用于软件开发领域,不论是系统软件、应用软件还是游戏开发、嵌入式系统等都有它的身影。本文旨在为你提供一个现代C++的快速入门指南,涵盖基本语法、面向对象编程概念、标准模板库(STL)的使用,以及自C++11起推出的多项新特性。

1. C++基本语法

变量和数据类型

C++支持多种数据类型,包括基本类型(如int、float、double、char等)和复合类型(如数组、结构体、指针等)。声明变量时,必须指定其类型。

int number = 10;
char letter = 'A';
float pi = 3.14;
double e = 2.71828;

控制结构

C++中的控制结构包括条件语句(if-else、switch)和循环语句(for、while、do-while)。

// if-else示例
if(number > 0) {
    cout << "Positive number";
} else {
    cout << "Non-positive number";
}

// for循环示例
for(int i = 0; i < 5; ++i) {
    cout << i << " ";
}

函数

函数是组织良好的代码块,执行特定任务。C++支持带返回值和不带返回值的函数。

// 计算两个数的和
int sum(int a, int b) {
    return a + b;
}

2. 面向对象编程(OOP)

C++是一种面向对象的语言,支持类和对象的概念。

类和对象

类是一个蓝图,定义了一组数据和操作这些数据的方法。对象是根据类定义创建的实体。

class Box {
public:
    double length; // 长度
    double breadth; // 宽度
    double height; // 高度

    // 计算体积的成员函数
    double getVolume() {
        return length * breadth * height;
    }
};

Box box1; // 创建Box类的对象
box1.length = 5.0;
box1.breadth = 6.0;
box1.height = 7.0;
cout << "Volume of Box1: " << box1.getVolume();

继承、多态和封装

继承允许一个类继承另一个类的属性和方法。多态通过指针或引用调用类的方法实现。封装是把数据和操作数据的方法捆绑在一起的机制。

// 基类
class Shape {
public:
    void setWidth(int w) {
        width = w;
    }
    void setHeight(int h) {
        height = h;
    }
protected:
    int width;
    int height;
};

// 派生类
class Rectangle: public Shape {
public:
    int getArea() {
        return (width * height);
    }
};

3. 标准模板库(STL)

STL是一组模板类和函数的集合,提供常见的数据结构(如向量、列表、队列)和算法(如排序、搜索)。

向量(vector)

向量是动态数组,可以根据需要动态扩展。

#include <vector>
#include <iostream>
using namespace std;

int main() {
    vector<int> vec;
    for(int i = 0; i < 5; ++i) {
        vec.push_back(i);
    }
    for(int i = 0; i < vec.size(); ++i) {
        cout << vec[i] << " ";
    }
}

迭代器

迭代器是访问STL容器元素的对象,类似于指针。

vector<int>::iterator it;
for(it = vec.begin(); it != vec.end(); ++it) {
    cout << *it << " ";
}

算法

STL提供一套丰富的算法,可以直接用于容器。

sort(vec.begin(), vec.end());

4. C++11及之后版本的新特性

C++11引入了多项新特性,进一步增强了语言的功效性和灵活性。

自动类型推断(auto关键字)

auto x = 4;
auto y = 3.37;
auto ptr = &x;

基于范围的循环

vector<int> v = {0, 1, 2, 3, 4, 5};
for(auto i : v) {
    cout << i << " ";
}

Lambda表达式

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

智能指针

智能指针是一种可以自动管理内存的对象,主要包括std::unique_ptrstd::shared_ptrstd::weak_ptr

现代C++的入门到掌握是一条充满挑战和奖励的道路。通过理解和应用上述概念、技巧及最佳实践,你将能够有效地利用C++的强大功能。记住,编程语言是在实践中学习得最好的,因此,尽量动手实践这些示例,并尝试编写自己的程序来巩固学习成果。

本文原文来自360doc.com

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号