zoukankan      html  css  js  c++  java
  • C++ 函数新增特性 【续】

    默认参数: 当函数调用中省略了实参时自动使用的一个值。  极大地提高了函数的灵活性。 当参数重新给出使,给定的值会覆盖默认参数,从而不影响函数的正常使用。

    由于编译器通过查看函数原型来了解函数所使用的参数数目,因此函数原型也必须将可能的默认参数告知程序。  注意:在原型/声明时指定默认参数,而在函数定义是不能指定默认参数。  eg: char * left (const char * str, int n=1);   

    对于带参数列表的函数,必须从右向左添加默认值,也就是说,要为某个参数设置默认值,则必须为它右边的所有参数提供默认值:eg: int harpo (int n, int m=4, int j=5);   实参则按照从左往右的顺序依次被赋给相应的形参,不能跳过任何参数。

    默认参数不是编程方面的重大突破,而只是提供了一种边界的方式。

    函数重载: 默认参数让您能够使用不同数目的参数调用同一个函数,而函数重载让你能够使用多个同名的函数。

    C++根据上下文来确定要使用的重载函数的版本。

    函数重载的关键是函数的参数列表——也成为函数特征标(signature)。C++允许定义名称相同的函数,条件是他们的特征表不同。如果参数数目和/或类型不同,则特征标不同。 eg: void print(const char * str, int width);     void print(double d, int width);  当使用print()函数时,编译器会根据所采用的用法使用有相应特征标的原型。

    当类型均不匹配时,C++将尝试使用标准类型转换将至进行匹配,但是当有多重转换方式可选时,c++认为出错。

    变量类型引用和变量类型本身视为同一个特征标。   是函数特征标,而不是函数类型使得可以对函数进行重载。

    重载使用的场景:仅当函数基本上执行相同的任务,但使用不同形式的数据时,才应采用函数重载。

    c++如何跟踪每一个重载函数呢?   编辑器 使用 名称修饰。   对元使命进行修饰,对参数数目和类型进行编码,如何编码取决于 参数特征标 和 不同编译器的约定。

  • 相关阅读:
    RocketMQ同一个消费者唯一Topic多个tag踩坑经历
    1.写一个字符串反转函数.
    1.什么是灰度发布?
    简单比较 @EnableEurekaClient 和 @EnableDiscoveryClient 两个注解
    字符串拼接出现null的问题
    webSocket无法注入bean问题解决方案
    数据库中的时间类型需要指定长度吗?
    SQL语句的优化
    NoClassDefFoundError
    1.代码规范之 if 语句编写
  • 原文地址:https://www.cnblogs.com/babysunnie/p/3199223.html
Copyright © 2011-2022 走看看