1. 了解C与C++的关系
- C++ 是C语言的超集,意味着所有C语言代码在C++中都有效,但C++引入了更多的特性。
- C++ 是面向对象的编程语言,而C语言是过程化编程语言。
2. 基本语法与数据类型
- 变量声明与初始化: C:
C++:支持类和对象的构造函数、重载等特性。int a = 10;
int a = 10;
- 输入输出: C:使用
printf()
和scanf()
。
C++:使用printf("Enter a number: "); scanf("%d", &a);
iostream
,cin
和cout
。std::cout << "Enter a number: "; std::cin >> a;
3. 面向对象编程
-
类与对象: C 不支持类和对象,C++则提供了类的支持,允许封装数据和函数。 C++ 示例:
class MyClass { public: int value; void display() { std::cout << value << std::endl; } }; int main() { MyClass obj; obj.value = 5; obj.display(); }
-
构造函数与析构函数: C++ 支持构造函数和析构函数,它们用于对象的初始化和清理。
class MyClass { public: MyClass() { // 构造函数 value = 10; } ~MyClass() { // 析构函数 // 清理资源 } int value; };
-
继承与多态: C++ 支持继承和多态,这是面向对象编程的核心。
class Base { public: virtual void display() { std::cout << "Base" << std::endl; } }; class Derived : public Base { public: void display() override { std::cout << "Derived" << std::endl; } };
4. 函数重载与模板
-
函数重载: C++允许同名但参数不同的函数存在,即函数重载。
void display(int a) { std::cout << "Integer: " << a << std::endl; } void display(double b) { std::cout << "Double: " << b << std::endl; }
-
模板: C++ 提供模板机制,使得函数和类可以处理不同数据类型。
template <typename T> T add(T a, T b) { return a + b; }
5. 内存管理
- C 使用
malloc
和free
来动态分配和释放内存。 - C++ 使用
new
和delete
来动态分配和释放内存。
int* ptr = new int;
delete ptr;
6. 标准库与STL(标准模板库)
- C++ 引入了标准模板库(STL),它提供了容器(如
vector
,list
,map
)和算法。
#include <vector>
std::vector<int> vec = {1, 2, 3};
7. 异常处理
- C语言没有异常处理机制,而C++ 提供了
try
,catch
和throw
来进行异常处理。
try {
throw 10;
}
catch (int e) {
std::cout << "Caught exception: " << e << std::endl;
}
8. 命名空间
- C++ 引入了命名空间来解决名称冲突问题。
namespace MyNamespace {
int value = 10;
}
9. C++的其他特性
- 智能指针(
std::unique_ptr
,std::shared_ptr
) - Lambda表达式:匿名函数
auto
类型推断- 范围for循环:用于遍历容器
for (auto i : vec) { std::cout << i << std::endl; }
10. 从C到C++的过渡
- C语言代码几乎可以直接在C++中编译,但是要充分利用C++特性,推荐逐步引入面向对象的编程思想。
- 从结构体(struct)到类(class),逐渐引入成员函数和私有数据。
- 使用STL库来替代传统的数组和指针操作,提高代码的可读性和安全性。