C++入门教程详解之命名空间、函数重载、缺省参数
什么是命名空间?
命名空间是C++中用来避免命名冲突的一种机制,即将一些全局变量、常量、类型等封装到一个命名空间中,在调用的时候指定命名空间即可。例如:
namespace my_namespace {
int a = 1;
int b = 2;
}
int main() {
std::cout << my_namespace::a << std::endl;
return 0;
}
在代码中定义了一个名为my_namespace
的命名空间,其中有两个变量a
和b
。然后在main
函数中调用了my_namespace::a
,这样就可以避免与其他变量冲突。
什么是函数重载?
函数重载是指在同一个作用域中,有多个同名函数但是参数列表不同。例如:
void print(int a) {
std::cout << "int: " << a << std::endl;
}
void print(double a) {
std::cout << "double: " << a << std::endl;
}
int main() {
print(1);
print(1.1);
return 0;
}
在代码中,定义了两个同名函数print
,一个参数列表为int
,一个参数列表为double
。在main
函数中分别调用了这两个函数,可以根据参数类型自动匹配到正确的重载函数。这样可以提高代码的复用性和可读性。
什么是缺省参数?
缺省参数是指在函数声明的过程中,为某个参数指定默认值。例如:
void print(int a, int b = 10) {
std::cout << "a: " << a << ", b: " << b << std::endl;
}
int main() {
print(1);
print(2, 3);
return 0;
}
在代码中,定义了一个名为print
的函数,有两个参数a
和b
,其中b
的默认值为10
。在main
函数中分别调用了print
函数,第一个调用只传递了一个参数,那么第二个参数就使用了默认值10
,第二个调用传递了两个参数,第二个参数覆盖了默认值。这样可以在调用函数时简化代码。
示例应用
下面通过两个示例来说明命名空间、函数重载、缺省参数的应用:
示例1:一个数学库
namespace my_math {
const double pi = 3.14;
double add(double a, double b) {
return a + b;
}
double subtract(double a, double b) {
return a - b;
}
double multiply(double a, double b) {
return a * b;
}
double divide(double a, double b) {
return a / b;
}
}
int main() {
std::cout << my_math::add(1, 2) << std::endl;
std::cout << my_math::divide(4, 2) << std::endl;
return 0;
}
在代码中,定义了一个名为my_math
的命名空间,其中包含了常量pi
和四个函数add
、subtract
、multiply
、divide
。在main
函数中,调用了add
和divide
函数,由于这两个函数都在my_math
命名空间中,因此需要加上my_math::
前缀。
示例2:一个图形库
namespace my_graphics {
void draw(int x, int y) {
std::cout << "Draw point: (" << x << "," << y << ")" << std::endl;
}
void draw(int x, int y, int width, int height) {
std::cout << "Draw rectangle: (" << x << "," << y << "," << width << "," << height << ")" << std::endl;
}
void draw(int x, int y, int radius, bool fill = false) {
std::cout << "Draw circle: (" << x << "," << y << "," << radius << ")" << std::endl;
if (fill) {
std::cout << "Fill circle." << std::endl;
}
}
}
int main() {
my_graphics::draw(0, 0);
my_graphics::draw(10, 10, 20, 30);
my_graphics::draw(20, 20, 5, true);
return 0;
}
在代码中,定义了一个名为my_graphics
的命名空间,其中包含了三个函数draw
,分别用于画点、矩形和圆形。其中画圆形的函数还有一个缺省参数fill
,默认为不填充。在main
函数中,分别调用了三个函数,并传递了不同的参数,演示了函数重载和缺省参数的用法。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++入门教程详解之命名空间、函数重载、缺省参数 - Python技术站