一篇文章掌握C++的80%:现代C++快速入门
一篇文章掌握C++的80%:现代C++快速入门
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_ptr
、std::shared_ptr
和std::weak_ptr
。
现代C++的入门到掌握是一条充满挑战和奖励的道路。通过理解和应用上述概念、技巧及最佳实践,你将能够有效地利用C++的强大功能。记住,编程语言是在实践中学习得最好的,因此,尽量动手实践这些示例,并尝试编写自己的程序来巩固学习成果。
本文原文来自360doc.com