我一直在寻找一个很好的解释,为什么/为什么不将struct构造函数作为函数参数使用是合法的.有人可以提供吗?
// Begin simple illustrative example C++ program
#include<vector.h>
struct Item
{
Item(double data, const int lead)
: m_grid(data), m_lead(lead) {}
double m_grid;
int m_lead;
};
int main()
{
double img = 0.0;
int steps = 5;
std::vector<Item> images;
for (int i = 0; i < steps; i++)
{
img += 2.0;
images.push_back(Item(img,i));
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我的印象是构造函数既没有返回类型也没有声明......
我遇到过一些看起来像这样的C++代码(本文简化):
(这是函数原型中的位置someCode.hpp)
void someFunction(const double & a, double & b, const double c = 0, const double * d = 0);
Run Code Online (Sandbox Code Playgroud)
(这里是位于函数体的第一行someCode.cpp说#include的someCode.hpp)
void someFunction(const double & a, double & b, const double c, const double * d);
Run Code Online (Sandbox Code Playgroud)
我可以合法地someFunction使用:
someFunction(*ptr1, *ptr2);
Run Code Online (Sandbox Code Playgroud)
和/或
someFunction(*ptr1, *ptr2, val1, &val2);
Run Code Online (Sandbox Code Playgroud)
其中的变量ptr1,ptr2,val,和val2已经适当定义,val1并且val2不等于零?为什么或者为什么不?
如果它是合法的,这种语法是否优先于重载函数以考虑可选参数?