gpt4 book ai didi

c++ - 在 C 中手动调用 C++ 对象的初始化程序

转载 作者:太空狗 更新时间:2023-10-29 20:39:40 25 4
gpt4 key购买 nike

我正在开发一个用 C++ 编写并想在我的平台上使用的小型应用程序。不幸的是,我们的交叉编译工具链只(可靠地)提供了一个 C 编译器。我查看了该应用程序,发现它相当简单,仅在几个地方使用了特定于 C++ 的习语,所以我想我只需将其手动转换为 C 代码即可。

我碰到了一行,我不确定如何处理。该代码使用 Termios 打开一个新端口以与 TTY 流对话,并使用 new 关键字初始化 Termios 结构。

termios *settings = new termios();

据我了解,new 关键字除了分配适当的内存外,还调用对象的初始化程序。在 C 语言中,使用 malloc 分配内存后,我可以手动调用初始化程序吗?我需要吗?

我有一种感觉,我误解了一些明显的/基本的东西,或者我对这一切的看法都是错误的。我不太习惯 C++ 代码。

编辑:我似乎引起了一些困惑。上面的代码行正在创建一个新的 termios 结构,如 termios.h 中所定义,它是大多数 C 实现的标准库的一部分。

最佳答案

线

termios *settings = new termios();

termios 对象和 value-initializes 分配内存它。由于 termios 是一个 POD,因此等效的 C 将是

struct termios* settings = calloc(1, sizeof(*settings));

struct termios* settings = malloc(sizeof(*settings));
memset(settings, 0, sizeof(*settings));

当然,删除设置的等价物是free(settings)

关于c++ - 在 C 中手动调用 C++ 对象的初始化程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27046806/

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