C++入门教程详解之命名空间、函数重载、缺省参数

C++入门教程详解之命名空间、函数重载、缺省参数

什么是命名空间?

命名空间是C++中用来避免命名冲突的一种机制,即将一些全局变量、常量、类型等封装到一个命名空间中,在调用的时候指定命名空间即可。例如:

namespace my_namespace {
    int a = 1;
    int b = 2;
}

int main() {
    std::cout << my_namespace::a << std::endl;
    return 0;
}

在代码中定义了一个名为my_namespace的命名空间,其中有两个变量ab。然后在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的函数,有两个参数ab,其中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和四个函数addsubtractmultiplydivide。在main函数中,调用了adddivide函数,由于这两个函数都在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技术站

(0)
上一篇 2023年6月26日
下一篇 2023年6月26日

相关文章

  • jQuery禁用快捷键例如禁用F5刷新 禁用右键菜单等的简单实现

    实现禁用快捷键的方法有多种,其中使用 jQuery 实现较为便捷。下面将详细讲解如何禁用 F5 刷新和右键菜单。 禁用 F5 刷新 方法一 $(document).keydown(function(event) { if (event.keyCode == 116) { event.preventDefault(); } }); 上述代码中,keydown …

    other 2023年6月27日
    00
  • leptonica在vs2010中的编译及简单使用举例

    以下是leptonica在vs2010中的编译及简单使用举例的完整攻略,包括环境配置、编译方法、注意事项和示例说明等内容。 1. 环境配置 在使用leptonica之前,我们需要配置好相关的开发环境。以下是环境配置的步骤: 安装Visual Studio 2010。我们可以从官网(https://visualstudio.microsoft.coms/old…

    other 2023年5月10日
    00
  • 封装好的一个万能检测表单的方法

    下面是封装一个万能检测表单的方法的完整攻略: 步骤一:确定需求和功能 首先,我们需要明确我们需要封装的函数应该具备哪些需求和功能。一般来说,我们会希望这个函数可以完成以下功能: 检测表单中各个输入框是否为空或符合要求; 根据表单类型和特定需求,对表单进行不同的验证,例如:是否为手机号码、是否为合法email地址、是否为数字等等; 在表单填写不符合要求时,会有…

    other 2023年6月25日
    00
  • PHP中$GLOBALS与global的区别详解

    PHP中$GLOBALS与global的区别详解 在PHP中,$GLOBALS和global都是用于在函数内部访问全局变量的关键字。它们的作用相似,但有一些重要的区别。 1. $GLOBALS关键字 $GLOBALS是一个超全局变量,它是一个包含了当前脚本中所有全局变量的关联数组。通过$GLOBALS可以在函数内部访问和修改全局变量的值。 下面是一个示例,演…

    other 2023年7月29日
    00
  • Python3.5局部变量与全局变量作用域实例分析

    Python3.5局部变量与全局变量作用域实例分析 在Python中,变量的作用域决定了其可见性和访问范围。局部变量是在函数内部定义的变量,只能在函数内部访问。全局变量是在函数外部定义的变量,可以在整个程序中访问。 局部变量的作用域 局部变量的作用域限定在函数内部,只能在函数内部使用。当函数执行完毕后,局部变量的内存空间会被释放。 下面是一个示例,演示了局部…

    other 2023年7月29日
    00
  • jquery实现简易验证插件封装

    完整攻略:jquery实现简易验证插件封装 1、需求分析 我们需要一个能够实现表单验证的jQuery插件,该插件能够进行基本的表单数据格式验证,验证成功后能够提交表单数据。 2、设计思路 定义一个名为 “validateForm” 的jQuery插件,该插件接受一个配置对象(包含验证规则和提示信息)作为参数,用于对表单数据进行验证。 在插件中使用 jQuer…

    other 2023年6月25日
    00
  • Mysql指定某个字符串字段前面几位排序查询方式

    在MySQL中,可以使用函数来对字符串类型的字段进行排序,其中常用的函数之一是SUBSTRING,可以用它来指定某个字符串字段前面几位进行排序查询。使用SUBSTRING函数可以取出字符串的一部分,它的语法格式为: SUBSTRING(str, pos, len) 其中,str表示要截取的字符串,pos表示开始截取的位置,从1开始计数,len表示要截取的长度…

    other 2023年6月25日
    00
  • 服务器购买和初步搭建的方法

    服务器购买和初步搭建的方法是一个比较复杂的过程,下面我来给您详细讲解一下。 服务器购买 1. 选择合适的服务器供应商 目前市面上拥有很多可以提供服务器购买服务的供应商,如阿里云、腾讯云、华为云等等,您需要根据自己的需要和预算选择合适的供应商。 2. 确定服务器配置 在选择服务器供应商之后,就需要确定服务器的配置,通常包括 CPU、内存、硬盘等方面的配置。不同…

    other 2023年6月27日
    00
合作推广
合作推广
分享本页
返回顶部