因此,据我了解,如果我有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/