好的,以下内容将介绍C++相较于C语言的核心改进(上篇),聚焦基础特性:
引用(Reference)
C++引入引用作为变量的别名,提供更直观的操作方式:
int a = 10;
int &ref = a; // ref是a的别名
ref = 20; // 等同于a = 20
对比C语言指针:
int a = 10;
int *ptr = &a;
*ptr = 20; // 需解引用操作
函数重载(Function Overloading)
允许同名函数根据参数类型或数量自动匹配:
void print(int x) { cout << "Integer: " << x; }
void print(double x) { cout << "Double: " << x; }
// 调用时自动选择:
print(5); // 匹配int版本
print(3.14); // 匹配double版本
https://weibo.com/tv/show/1034:5272237767589892
https://weibo.com/tv/show/1034:5272237700481040
https://weibo.com/tv/show/1034:5272237633372167
https://weibo.com/tv/show/1034:5272237566263315
https://weibo.com/tv/show/1034:5272237503348746
https://weibo.com/tv/show/1034:5272237436239901
https://weibo.com/tv/show/1034:5272237369131019
https://weibo.com/tv/show/1034:5272237302022151
https://weibo.com/tv/show/1034:5272237226262553
https://weibo.com/tv/show/1034:5272237163610118
C语言不支持此特性,需手动命名不同函数(如 print_int()、print_double())。
默认参数(Default Arguments)
函数参数可设置默认值,简化调用:
void draw(int x, int y = 0, int color = 1) {
// 绘制逻辑
}
draw(10); // 等价于 draw(10, 0, 1)
draw(20, 30); // 等价于 draw(20, 30, 1)
注意:默认参数需从右向左连续设置。
命名空间(Namespace)
避免全局标识符冲突,支持模块化封装:
namespace Math {
const double PI = 3.14159;
double square(double x) { return x * x; }
}
// 使用方式:
double area = Math::square(2) * Math::PI;
输入输出流(I/O Streams)
替代C的 printf()/scanf(),支持类型安全操作:
#include <iostream>
using namespace std;
int num;
cout << "Enter a number: "; // 输出
cin >> num; // 输入
https://weibo.com/tv/show/1034:5272237767589892
https://weibo.com/tv/show/1034:5272237700481040
https://weibo.com/tv/show/1034:5272237633372167
https://weibo.com/tv/show/1034:5272237566263315
https://weibo.com/tv/show/1034:5272237503348746
https://weibo.com/tv/show/1034:5272237436239901
https://weibo.com/tv/show/1034:5272237369131019
https://weibo.com/tv/show/1034:5272237302022151
https://weibo.com/tv/show/1034:5272237226262553
https://weibo.com/tv/show/1034:5272237163610118
优势:无需格式符(如 %d),自动推导数据类型。
下篇将探讨面向对象(类、继承、多态)等进阶特性。
