c++ - 对象创建差异

标签 c++ object allocation

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

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”...所以实际上有一个对象

最佳答案

第一个做了 4 件事:

第二个只是创建指向 Test 的指针。而且它还没有初始化。


@yogi - 对于您的编辑 - 这完全是未定义的行为,因为指针未初始化。不,它不是一个对象。参见 C++ function called without object initialization获取更多信息。

关于c++ - 对象创建差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6278139/

相关文章:

c++ - 类型 "const <Component> *"的值无法分配给类型 "<Component> *"的实体

c++ - 使用带有 std::string 键和 int 键的 std::map 的成本?

javascript - 使用解构为已定义的变量赋值

c# - 以括号作为属性名称的新对象

c++ - 将环境变量存储在动态分配的数组中

c - C 中的动态内存分配 : why do I get an error?

c++ - 为什么我的文件是空的?

c++ - 如何实现嵌套流畅的接口(interface)?

C : Valgrind telling "Invalid write of size 4" but can't locate the problem

java - Java中如何将Object的属性值转换为数组?