gpt4 book ai didi

c++ - 将数字传递给成员函数导致程序崩溃

转载 作者:行者123 更新时间:2023-11-27 22:56:51 25 4
gpt4 key购买 nike

我刚刚开始学习指针以及它们如何作为成员函数工作。我开始玩了一下,最终写了这么一小段代码:

class Animal
{
private:
int *itsAge = 0;
int *itsWeight = 0;

public:
void SetAge(int age) { *itsAge = age; };
int GetAge() { return *itsAge; };
};



int main() {

Animal Lion;
Lion.SetAge(3);
cout << Lion.GetAge();

return 0;

};

我的问题是为什么我的程序在运行时崩溃了?在我看来,我正在将数字 3 按值传递给 SetAge() 函数。然后,值 3 的拷贝存储在 age 中,然后将其分配给指针 itsAge 的值。是因为 itsAge 从未分配过地址吗?如果是这样,那是否意味着将itsAge初始化为0,并没有真正准备好要使用的指针?

最佳答案

将程序重写为:

struct Animal {
int age = 0;
int weight = 0;
};

int main() {
Animal lion;
lion.age = 3;
std::cout << lion.age;
return 0;
};

不需要指针。仅供引用,您的程序崩溃是因为您将这些指针初始化为 0,然后使用 * 取消引用它们,这是未定义的行为。

关于c++ - 将数字传递给成员函数导致程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31975186/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com