以下两种创建对象的方法有什么区别?
Test* t = new Test();
和
Test* t;
您对第二个示例的答案与我认为会做的(没有创建对象)相匹配
class Test {
public:
void bla(void) {
std::cout << "test" << std::endl;
};
};
int main(void) {
Test* test;
test->bla();
}
给我输出“测试” ...所以实际上有一个对象
最佳答案
第一个做四件事:
创建指向Test
的指针
分配内存并创建Test
对象(请注意,它是Test
,而不是test
)
由于()
,因此对新对象进行了值初始化-有关更多信息,请参见Do the parentheses after the type name make a difference with new?
初始化指针以指向创建的对象
第二个只是创建指向Test
的指针。并且它没有初始化。
@yogi-供您编辑-完全未定义行为,因为指针未初始化。不,这不是一个对象。有关更多信息,请参见C++ function called without object initialization。