C++ 函数参数和默认函数参数

C++ 中函数参数有时候会比较复杂,下面以一个例子来分析其中所涉及到的知识。这是一个Qt中常用的QString类的函数:

QString QString::arg(const QString & a, int fieldWidth = 0, QChar fillChar = QLatin1Char( ' ' )) const;

const QString & a:

  • const表示a在该函数中不能被修改,是个常数;
  • & 表示传入的参数是原参数的一个引用,这样可以不必在本地复制一份参数,加快函数的执行速度。

通常情况下都要避免在函数内对a的引用进行修改,否则将会导致原变量值改动,所以加上const非常有必要,这也是这两个限定符号通常会同时出现在函数参数列表里面的原因。

int fieldWidth = 0

等号后面是参数的默认值,如果不输入该参数则默认使用等号后面的值。需要注意的是函数参数列表里面第一个出现的有默认值的参数之后的参数也一定都要有默认值。值得指出的是默认值还可以是函数,例如:

double a = exp(1.25)    //  使用系统内置函数和常数参数。 
double a= fun(1.25)     // 使用自定义、已经声明的函数和常数参数。 
double a= fun(num)    // num 必须是全局变量~

const;

  1. 非静态成员函数后面加const(加到非成员函数或静态成员后面会产生编译错误)
  2. 表示成员函数隐含传入的this指针为const指针,决定了在该成员函数中,** 任意修改它所在的类的成员的操作都是不允许的(因为隐含了对this指针的const引用**);
  3. 唯一的例外是对于mutable修饰的成员。 加了const的成员函数可以被非const对象和const对象调用不加const的成员函数只能被非const对象调用 参考链接: 关于const成员的说明

如果你对本文有任何疑问或建议,欢迎联系我。本博客所有文章除特别声明外,均为原创文章,未经授权请勿转载!

Windows下Qt 编译release版本后遇见的各种问题 上一篇
ubuntu 安装字体文件脚本 下一篇

 目录