gpt4 book ai didi

c++ - 在函数调用中使用构造函数?

转载 作者:可可西里 更新时间:2023-11-01 17:08:27 26 4
gpt4 key购买 nike

我一直在寻找一个很好的解释为什么/为什么下面使用 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;
}

我的印象是构造函数既没有返回类型也没有语句...

最佳答案

这是合法的。

您永远不会自己调用构造函数;您实际上只是在声明类型为 Item 的未命名或“临时”对象。查看当您使对象未命名时语法如何演变:

Item a(img,i); // normal
Item(img,i); // temporary

即使看起来好像您在像调用函数一样调用构造函数,但实际上并非如此。

无论如何,您可以在函数参数等中将临时值用作“右值”(因为它是一个),这就是您在这里所做的。


顺便说一句,不要使用旧的 iostream.hvector.h header 。它们早于 1998 年。在 ISO 标准 C++ 中,您应该分别使用 iostreamvector。 C++ 中的标准头文件不以“.h”结尾(inb4,忽略为向后兼容而继承的 C 头文件)。

关于c++ - 在函数调用中使用构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5257914/

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