命名空间是一种将相关的代码组织在一起的方法,以避免命名冲突。当你有两个或多个库或模块,它们定义了相同名称的类或函数时,命名空间就派上了用场。
namespace MyNamespace {
void myFunction() {
// ...
}
class MyClass {
// ...
};
}
// 使用命名空间中的函数或类
MyNamespace::myFunction();
MyNamespace::MyClass obj;
缺省参数允许你为函数的某些参数提供默认值。如果在调用函数时没有为这些参数提供值,那么就会使用默认值。
void myFunction(int a, int b = 10, int c = 20) {
// ...
}
// 调用函数,省略第二个和第三个参数
myFunction(5); // a = 5, b = 10, c = 20
// 调用函数,只省略第三个参数
myFunction(5, 15); // a = 5, b = 15, c = 20
// 调用函数,提供所有参数
myFunction(5, 15, 25); // a = 5, b = 15, c = 25
你可以在命名空间内部定义带有缺省参数的函数。这并不会影响它们的工作方式,只是为它们提供了一个组织代码的环境。
namespace MyNamespace {
void myFunction(int a, int b = 10, int c = 20) {
// ...
}
}
// 调用函数,使用命名空间
MyNamespace::myFunction(5); // a = 5, b = 10, c = 20
::
(作用域解析运算符)来指定你正在使用的命名空间。
在C++中,函数重载(Function Overloading)允许我们在同一作用域内定义多个同名函数,但它们的参数列表(参数类型、参数数量或参数顺序)必须不同。编译器根据传递给函数的参数来确定应该调用哪个函数。
下面是一个函数重载的简单示例:
#include <iostream>
// 函数重载示例
void print(int x) {
std::cout << "Printing an integer: " << x << std::endl;
}
void print(double x) {
std::cout << "Printing a double: " << x << std::endl;
}
void print(const char* str) {
std::cout << "Printing a string: " << str << std::endl;
}
int main() {
print(10); // 调用 print(int)
print(10.5); // 调用 print(double)
print("Hello"); // 调用 print(const char*)
return 0;
}
在上面的示例中,我们定义了三个名为print
的函数,分别接受int
、double
和const char*
类型的参数。在main
函数中,我们根据传递给print
函数的参数类型来调用不同的函数。
void foo(int*)
和void foo(int&)
是两个不同的重载函数。希望对你有帮助!加油!
若您认为本文内容有益,请不吝赐予赞同并订阅,以便持续接收有价值的信息。衷心感谢您的关注和支持!