指针是否在内存中发生?

Mar*_*ima 1 c++ pointers

Hell'o,我有一个成员可靠的类,它是指针.如果我创建这个类的实例而没有初始化成员指针(指向一些内存或null - 无论如何),这个指针会发生在内存中吗?例如 - 我正在创建按钮实例,但是用户可以决定它对点击有声音效果还是没有 - 所以按钮类不应该为声音保留内存(如果用户选择了那个).

Muz*_*zer 6

它将为指针本身保留内存,但不为指针指向的对象保留内存.

在这种情况下,您应该在对象的构造函数中为指针赋值nullptr(或者NULL如果您使用的是C++ 03或更早版本),尽管我会考虑更改设计以使其不必要(例如,有两个类)用于按钮声音和按钮无声音并使用某种形式的继承).分配nullptr是一个方便的值,用于检查指针是否实际指向任何东西,并且在现代桌面系统上,如果您错误地访问它,则更有可能发生崩溃(尽管它实际上并不能保证它).崩溃比你的程序做一些奇怪和意外的事情更好,可能涉及破坏数据,这将使你永远追踪!

指针本身占用的空间非常小(在64位Intel架构上可能只有8个字节,但当然不能保证这一点).