我在这个网站上看过类似的书名,但仍然找不到答案。所以也许有人可以为我澄清一下。
可以说我有:
// Example class
class CFirst
{
public:
CFirst{ }
virtual ~CFirst{ }
int i;
float y;
};
// Other class methods looks like this
.........
CFirst *data = new CFirst();
data->i = 10;
data->y = 10.10;
if (data != NULL)
{
delete data;
data = NULL;
}
CFirst *data1 = new CFirst();
std::cout<<data1->i<<std::endl;
............
现在问什么。 data1-> i显示10。
那怎么可能..
PS:这只是一个例子。
谢谢你的指教。
最佳答案
data1->i
未初始化,它可以显示任何相关值。
CFirst *data = new CFirst();
data->i = 10;
data->y = 10.10;
当对
data
执行上述步骤时,您在动态内存区域(堆/免费存储)上创建了一个新的CFirst对象,并为i
对象的成员y
和CFirst
分配了值。对于
data
对象,您刚刚通过以下方式在动态内存区域中创建了该对象:CFirst *data1 = new CFirst();
您没有初始化它们,未初始化的变量可以包含任何有效数字甚至是垃圾值,只是
data->i
包含10
,请注意,没有特定的原因它包含10
,它可以包含任何内容。使用UnInitialized成员变量是一个坏主意,理想情况下,应该在初始化程序列表中初始化成员变量。
CFirst(int p, float q):i(p),y(q)
{
}
关于c++ - 一类,两个对象和类数据的奇怪行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6478047/