【发布时间】:2016-03-31 14:56:44
【问题描述】:
-
我有以下代码可以 100% 正常工作。我也知道,幕后究竟发生了什么。在这种情况下,“新”是如何工作的。
struct ABC{ int data = 1234; }; ABC *obj = new ABC; cout << "obj->data"; -
以下代码无法正常编译然后崩溃。没有语法或编译错误。
struct ABC{ int data = 1234; }; ABC *obj; // please explain?? cout << "obj->data"; -
以下代码也可以正常工作。
struct ABC{ int data = 1234; }; ABC *obj, myobj; myObj = &obj; cout << "obj->data";
我也知道,第三个rd 是如何工作的。请解释一下,为什么 2nd 一个不起作用。很抱歉没有创建 main() 程序。
【问题讨论】:
-
无法复制,打印字符串就可以了。
-
您确定,“cout data"" 行是用 " 围绕 obj->data 编写的吗?在您的代码中,所有 3 个示例都必须使用 text= 打印相同的字符串“obj->data”仅此而已
-
如果没有引号,则 2 中的崩溃很容易解释,因为 obj 指向未初始化的内存,并且取消引用它是未定义的行为,通常被视为崩溃。
标签: pointers c++11 struct new-operator