创建对象的以下两种方法有什么区别?
Test* t = new Test();
Run Code Online (Sandbox Code Playgroud)
和
Test* t;
Run Code Online (Sandbox Code Playgroud)
你对第二个样本的答案与我认为它会做的事情相匹配(没有创建对象)但是
class Test {
public:
void bla(void) {
std::cout << "test" << std::endl;
};
};
int main(void) {
Test* test;
test->bla();
}
Run Code Online (Sandbox Code Playgroud)
给我输出"测试"......所以实际上有一个对象
第一个做4件事:
TestTest对象(注意,它Test不是test)()- 请参阅类型名称后的括号是否与new有所不同?欲获得更多信息第二个只是创建指针Test.它没有初始化.
@yogi - 用于编辑 - 这是完全未定义的行为,因为指针未初始化.不,这不是一个对象.有关更多信息,请参阅无对象初始化时调用的C++函数