C++ 引入了 命名空间(namespace),用于组织代码并避免名称冲突。在大型项目中,命名空间可以避免多个函数或变量具有相同的名称。C 语言没有命名空间机制,只能通过文件作用域和 static 关键字来解决名称冲突问题。
示例:
#include <iostream>
namespace MathFunctions {
int add(int a, int b) {
return a + b;
}
}
int main() {
std::cout << MathFunctions::add(3, 4) << std::endl; // 使用命名空间中的函数,输出 7
return 0;
}
9. 异常处理
C++ 支持 异常处理,通过 try、catch 和 throw 来处理运行时错误。这是一种更结构化的错误处理机制。在 C 中,错误处理通常依赖于返回值和全局变量 errno,并没有异常处理的语法。
示例:
#include <iostream>
int divide(int a, int b) {
if (b == 0) {
throw std::runtime_error("Division by zero");
}
return a / b;
}
int main() {
try {
std::cout << divide(10, 0) << std::endl;
} catch (const std::exception &e) {
std::cout << "Error: " << e.what() << std::endl;
}
return 0;
}
C 语言中只能通过返回错误代码或者设置全局变量来指示错误,例如:
#include <stdio.h>
int divide(int a, int b) {
if (b == 0) {
return -1; // 返回错误码
}
return a / b;
}
int main() {
int result = divide(10, 0);
if (result == -1) {
printf("Error: Division by zero\n");
}
return 0;
}
总结
C++ 中的函数比 C 中的函数更加灵活,提供了诸如函数重载、默认参数、模板函数、引用参数、Lambda 表达式、类成员函数、异常处理等高级功能。这些特性使得 C++ 在编写复杂程序时具有更强的表达力和代码复用能力。而 C 语言的函数更基础,缺乏这些面向对象和泛型编程的能力。