(C++)C语言和C++的关系和区别(C++教学)(C语言)
C语言与C++的区别和关系(新手向指南)
一、基本关系(父子关系)
-
历史渊源:
-
C语言:1972年由丹尼斯·里奇发明
-
C++:1983年由本贾尼·斯特劳斯特卢普在C语言基础上扩展而来
-
简单说:C++是C语言的超集(大部分C代码可以直接在C++中运行)
-
-
继承关系:
二、核心区别对比表
特性 | C语言 | C++ | 新手理解 |
---|---|---|---|
编程思想 | 面向过程 | 面向对象 + 泛型编程 | C:按步骤做菜 C++:定义厨师和菜谱 |
文件扩展名 | .c | .cpp /.cc /.hpp | 文件后缀不同 |
Hello World | printf("Hello") | cout << "Hello" | C用函数,C++用对象 |
内存管理 | malloc/free | new/delete + 智能指针 | C++更安全方便 |
函数特性 | 不支持重载 | 支持函数重载 | C++:同名函数做不同的事 |
数据结构 | 结构体(struct) | 类(class = 结构体 + 方法) | C++给结构体"添加技能" |
三、C++独有的重要特性
-
类与对象(面向对象核心)
// C++示例:定义一个"狗"类 class Dog { public:// 构造函数(创建对象时自动调用)Dog(string name) : name(name) {}// 成员函数(方法)void bark() {cout << name << "说:汪汪!" << endl;}private:string name; // 成员变量 };int main() {Dog myDog("阿黄"); // 创建对象myDog.bark(); // 输出:阿黄说:汪汪! }
-
函数重载(同名不同功能)
// C++允许同名函数 void print(int num) { cout << "整数:" << num; } void print(string text) { cout << "文本:" << text; }print(10); // 调用第一个 print("你好"); // 调用第二个
-
标准模板库(STL - 强大工具箱)
#include <vector> #include <algorithm>vector<int> nums = {3, 1, 4}; // 动态数组 sort(nums.begin(), nums.end()); // 排序(1,3,4)
四、内存管理对比
操作 | C语言 | C++ |
---|---|---|
申请内存 | int* p = malloc(sizeof(int)) | int* p = new int |
释放内存 | free(p) | delete p |
特点 | 手动计算大小 | 自动计算类型大小 |
安全风险 | 易忘记释放/计算错误 | 相对更安全 |
五、新手学习建议
-
学习路径:
-
选择建议:
-
学C语言如果:
-
开发操作系统/嵌入式系统
-
理解计算机底层原理
-
打牢编程基础
-
-
学C++如果:
-
开发游戏/桌面应用
-
做高性能服务端程序
-
学习面向对象思想
-
-
-
经典比喻:
C语言像是手动挡汽车 - 需要自己控制所有细节
C++像是自动挡汽车 - 提供更多自动化功能,但也能手动控制
六、简单类比理解
生活场景 | C语言实现 | C++实现 |
---|---|---|
喝水 | 走到饮水机->接水->喝 | 定义"人"类,包含"喝水"方法 |
计算器 | 写函数add(), sub() | 创建Calculator类,封装所有操作 |
图书管理 | 用结构体数组存书 | 用vector<Book>容器管理 |
七、总结一句话
C语言是基石,C++是升级版建筑
学C语言掌握编程本质
学C++开发复杂高效程序
两者配合使用效果最佳!
练习:
// 输入任意一个整型十进制,将其转换为8进制和16进制
#include <iostream>
#include <iomanip>
using namespace std;//使用命名空间int main(){int a;cout<<"请输入任意的十进制数:"<<endl;//输出,原代码为std::cout,此处std::可省略cin>>a;//输入,原代码为std::cin,此处仍然省略cout<<"8进制结果为:"<<oct<<a<<endl<<"16进制结果为:"<<hex<<a<<endl;//endl换行符“<<”是操作符,意思是从前往后依次操作,“oct是8进制操纵符,dec是10进制操纵符,hex是16进制操纵符”
}
可以看到C++中,使用简单的操纵符就可以实现不同类型的整形输出形式,而在C语言中:
#include <stdio.h>int main() {int num;printf("请输入一个十进制整数:");scanf("%d", &num);// 八进制输出(带前缀0)printf("八进制结果:0%o\n", num);// 十六进制输出(带前缀0x,小写字母)printf("十六进制结果:0x%x\n", num);return 0;
}
只能使用标准库来实现,大家通过这个小练习也可以发现C语言和C++的区别挺大的,后面也会接着教大家学习C++相关内容;
注:该代码是本人自己所写,可能不够好,不够简便,欢迎大家指出我的不足之处。如果遇见看不懂的地方,可以在评论区打出来,进行讨论,或者联系我。上述内容全是我自己理解的,如果你有别的想法,或者认为我的理解不对,欢迎指出!!!如果可以,可以点一个免费的赞支持一下吗?谢谢各位彦祖亦菲!!!!!