gpt4 book ai didi

c++ - 理解 void func(A())

转载 作者:行者123 更新时间:2023-12-01 23:41:14 24 4
gpt4 key购买 nike

这是我的代码

#include <iostream>

class A {
public:
int a = 0;
A(int i = 0) : a(i) {}
};

void func(A())
{
std::cout << "Hello" << std::endl;
}

int main()
{
A(*p)() = NULL;
func(p);
}

令我困惑的是,void func(A()) 中的 A() 等于 A(*)() A 的构造函数。这是如何工作的?

最佳答案

我们来类比一下。如果你定义一个函数

void doSomething(A [137]) {

}

然后 C++ 会将其视为您实际编写的

void doSomething(A *) {

}

换句话说,对于某些类型,如果您将它们用作函数的参数,C++ 会自动将它们替换为不同的类型,即您通过分解该类型而获得的类型。类型。

就您而言,A() 是不接受参数并返回 A 的函数类型。如果您有一个采用 A() 作为参数的 C++ 函数,C++ 将使该函数采用 A (*)() 作为输入,这是一个指向不带参数并返回 A 的函数。原因是在 C++ 中你不能拥有 A() 类型的对象,尽管你可以拥有一个指向 A() 的指针。

关于c++ - 理解 void func(A()),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59090154/

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