对象创建差异

0 c++ allocation object

创建对象的以下两种方法有什么区别?

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)

给我输出"测试"......所以实际上有一个对象

Kir*_*rov 7

第一个做4件事:

第二个只是创建指针Test.它没有初始化.


@yogi - 用于编辑 - 这是完全未定义的行为,因为指针未初始化.不,这不是一个对象.有关更多信息,请参阅无对象初始化时调用的C++函数