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

yizhihongxing

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日

相关文章

  • PHP面相对象中的重载与重写

    PHP面向对象中的重载与重写 在PHP面向对象编程中,重载(overloading)和重写(overriding)是两个常用的概念。它们可以帮助开发者更加灵活地处理对象的属性和方法。接下来将进行详细解释。 重载 重载是指在类中定义特定方法来处理特定的操作符或者方法。这些方法可以被调用来为对象设置属性或者执行方法的访问。 __get()和__set()方法 _…

    other 2023年6月26日
    00
  • 使用filebeat收集日志传输到redis的各种效果展示

    使用filebeat收集日志传输到redis的各种效果展示 在现代化的应用程序中,日志记录是一项非常重要的组成部分。随着应用程序越来越复杂,往往需要监控大量的服务器和应用程序,这就需要我们使用一些高效的工具来帮助我们收集和管理日志。本文将介绍如何使用filebeat将应用程序日志传输到redis,通过一系列的实例展示filebeat的各种效果,帮助读者更好地…

    其他 2023年3月28日
    00
  • Android判断当前栈顶Activity的包名代码示例

    当我们需要判断当前栈顶Activity的包名时,可以使用Android的ActivityManager类来实现。下面是一个完整的代码示例: import android.app.ActivityManager; import android.content.ComponentName; import android.content.Context; publ…

    other 2023年9月7日
    00
  • JS中作用域以及变量范围分析

    JS中作用域以及变量范围分析 在JavaScript中,作用域是指变量、函数和对象的可访问性和可见性的范围。了解作用域和变量范围对于编写高效、可维护的代码至关重要。本攻略将详细讲解JS中的作用域以及变量范围分析。 1. 作用域类型 在JS中,有两种主要的作用域类型:全局作用域和局部作用域。 全局作用域 全局作用域是在整个JS程序中都可访问的作用域。在全局作用…

    other 2023年7月29日
    00
  • Android源码学习之单例模式应用及优点介绍

    下面我就详细讲解一下“Android源码学习之单例模式应用及优点介绍”的完整攻略。 一、单例模式介绍 单例模式是一种常用的设计模式,在Android开发中也经常使用到。该模式保证一个类只有一个实例,并提供一个全局访问点,可以方便地访问该实例。 单例模式的实现方式有多种,如饿汉式、懒汉式、双重校验锁等。 二、单例模式应用 在Android开发中,单例模式常用于…

    other 2023年6月27日
    00
  • sql替换数据库字段中的字符

    SQL替换数据库字段中的字符 在日常的数据库运维和数据处理中,常常需要对数据库中的字段进行批量替换操作,修改一些特定的字符。SQL语言提供了多种字符串处理的函数,可以方便地实现对数据库字段中字符的替换。 REPLACE函数 SQL中最常用的字符串替换函数就是REPLACE函数。REPLACE函数将指定的字符串替换成另一个字符串,并返回结果。 REPLACE函…

    其他 2023年3月29日
    00
  • app是什么意思 智能手机应用程序

    什么是app? App全称为Application,意为应用程序。它是一种在智能手机、平板电脑、智能手表等移动终端设备上运行的程序,具有各种各样的功能,比如社交、游戏、新闻、音乐等等。App可以从应用商店下载安装到设备中,用户可以随时通过app来完成相关的任务,例如聊天、浏览网站、购物等。 app的种类 目前市面上的app种类有很多,例如: 游戏类app 游…

    other 2023年6月25日
    00
  • 怎么恢复Win10系统被卸载的自带的应用程序?

    恢复Win10系统被卸载的自带的应用程序的步骤如下: 步骤一:打开PowerShell窗口 在开始菜单上搜索“PowerShell”,右键点击“以管理员身份运行”。 步骤二:输入命令 在PowerShell窗口里输入以下命令并按回车: Get-AppxPackage -AllUsers| Foreach {Add-AppxPackage -DisableDe…

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