gpt4 book ai didi

c++ - 以下是有效的 C++ 代码吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:05:52 25 4
gpt4 key购买 nike

如果是,它应该做什么?

typedef struct Foo_struct{
Dog d;
Cat* c;
struct Foo_struct(Dog dog, Cat* cat){ this->d = dog; this->c = cat;}
} Foo;

(背景故事:将用 Visual C++(在 Windows 上)编写的程序移植到 g++(在 MacOSX 上);不知道这段代码应该做什么。

谢谢!

最佳答案

我不这么认为。 (Comeau 同意我的看法。)您不能像这样定义构造函数。

在 C++ 中,结构名称是一等公民。无需使用 C 中的旧 typedef 技巧。此外,dc 应在成员初始化列表中进行初始化。这将是有效的(并且更好(C++):

struct Foo {
Dog d;
Cat* c;
Foo(Dog dog, Cat* cat) : d(dog), c(cat) {}
};

代码定义了一个结构(在 C++ 中,与类相同,除了它的成员默认是公共(public)的)和一个构造函数来在创建时初始化它的成员。

编辑:正如 Travis 在他的评论中所说,您可能需要考虑将 dog 作为 const 引用而不是复制它:

Foo(const Dog& dog, Cat* cat) : d(dog), c(cat) {}

如果 Dog(我们还没有看到)是一个具有多个内置成员的类,这可能比按拷贝传递它要便宜得多。

关于c++ - 以下是有效的 C++ 代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2197834/

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