gpt4 book ai didi

c++ - 在 C++ 函数头中初始化变量

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:32:04 26 4
gpt4 key购买 nike

我遇到过一些看起来像这样的 C++ 代码(针对本文进行了简化):

(这里是位于someCode.hpp中的函数原型(prototype))

void someFunction(const double & a, double & b, const double c = 0, const double * d = 0);

(这里是函数体的第一行位于#includesomeCode.hppsomeCode.cpp)

void someFunction(const double & a, double & b, const double c, const double * d);

我可以合法地调用 someFunction 使用:

someFunction(*ptr1, *ptr2);

和/或

someFunction(*ptr1, *ptr2, val1, &val2);

其中变量 ptr1ptr2valval2 已被适当定义并且 val1val2 不等于零?为什么或为什么不?

而且如果它是合法的,与重载函数以考虑可选参数相比,这种语法是否更可取?

最佳答案

是的,这是合法的,这叫做default arguments .我会说它比重载更受欢迎,因为它涉及的代码更少,是的。

关于您对 const 的评论,它不适用于默认值本身,它适用于参数。如果你有一个类型为 const char* fruit = "apple" 的参数,这并不意味着它必须使用一个字符指针来调用,该指针的值与 的地址相同"apple" 字符串文字(这很好,因为这很难保证)。这只是意味着必须使用指向常量字符的指针调用它,并告诉您被调用的函数不需要写入该内存,它只是从中读取。

关于c++ - 在 C++ 函数头中初始化变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5989652/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com