gpt4 book ai didi

c++ - "ClassName objName; objName(1);"是什么意思?

转载 作者:太空宇宙 更新时间:2023-11-04 15:46:31 25 4
gpt4 key购买 nike

我有这个代码:

ClassName objName;
objName(1);

应该怎么理解?第一行是否使用不带任何参数的构造函数创建了一个对象(称为 objName 并且属于 ClassName 类)?然后第二行调用带有一个整数参数的构造函数?那么,这意味着实际上在第二行我们销毁了旧对象并创建了一个新对象?

最佳答案

第一行照你说的做;它创建一个 ClassName 类型的对象并将其命名为 objName。它是使用其默认构造函数(不带参数)构造的。

第二行是为该类调用重载的operator()。这允许它像函数一样被调用。参数 1 被传递给那个重载的运算符。

这是一个例子:

struct foo
{
operator()(int x) { std::cout << x * 2 << std::endl; }
};

foo 类型正在重载 operator(),它采用 int。然后打印出传递的 int 乘以二的值。下面是它的使用示例:

foo f;
f(5); // Prints out 10

关于c++ - "ClassName objName; objName(1);"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15830943/

25 4 0