gpt4 book ai didi

c++ - C++中,为什么返回不同对象私有(private)变量的指针会导致段错误?

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

#include <iostream>

class C
{
private:
int *o;
public:
C(int &i) { *o = i;}
int* get_val() {return o;}
};

int main()
{
int t = 9;
C c(t);
int* p = c.get_val();
std::cout<<*p<<std::endl;
int* h = c.get_val(); //seg fault
std::cout<<*h<<std::endl;

int f = 25;
C g(f);
int* q = g.get_val(); //seg fault
std::cout<<*q<<std::endl;

return 0;
}

类 C 有两个对象:“c”和“g”。返回私有(private)变量的指针第一次工作正常,但第二次调用时会导致段错误。为什么会这样?

因此,我注释掉了第二个调用并尝试创建一个新对象并尝试返回私有(private)变量的指针。即使“g”是 C 类的另一个对象,返回它也会导致段错误。为什么会这样?

最佳答案

构造函数 C::C(int) 没有初始化成员变量 o。它尝试通过 *o=i 写入指针 o,但由于 o 未初始化,因此结果不可预测。

关于c++ - C++中,为什么返回不同对象私有(private)变量的指针会导致段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40700748/

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