c++ - 原始的C++默认构造函数?

标签 c++ c++11

因此,据我了解,如果我有SomeType foo,将调用SomeType的默认构造函数,并将foo初始化。但是,如果我有int x,则根据规范未定义。为什么不调用默认构造函数(int())?

最佳答案

Why isn't the default constructor (int() ) invoked?



如果程序员希望不初始化它们,那么该语言不想增加调用构造函数和初始化此类对象的成本。

澄清:
int x;

不会导致未定义的行为。使用x而不初始化它或未明确设置值是导致行为不确定的原因。

一个例子

这样一来,程序员就可以将大块内存分配为缓冲区,以后可以通过使用new来初始化对象。
char* buffer = new char[SOME_LARGE_BUFFER_SIZE];

然后
// Construct an object in dynamically allocated memory, buffer.
SomeObject* obj = new (buffer+offset) SomeObject;

给定buffer的用法,初始化buffer的每个元素对用户没有任何值(value)。给定用例,初始化此类对象的成本是不必要的。

关于c++ - 原始的C++默认构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61469367/

相关文章:

arrays - 如何处理动态数量的线程拥有的资源

c++ - 写入内存映射 IO。这个值需要稳定多久才能被IO看到?

c++ - 如何在 C++ 中打印已定义常量的内存地址

c++ - 如何修复 "array rvalue"无法使用 gcc-4.8 和 clang-3.7 进行编译的问题?

c++ - 如何实现最快的算法来匹配前缀和字符串?

c++ - 按级别缩进的 pretty-print C++ 容器

c++ - 何时以及如何使用 std::locale::messages?

c++ - ',' 标记之前的预期主表达式

c++ - 在信号处理程序中使用 SIGRTMIN 和 SIGRTMAX 是否安全?

c++ - glfwGetGLVersion 失败?