指针与类一起使用会返回垃圾值
Using Pointers In Conjunction With Classes Returns Garbage Values
这是今天早些时候测试中的代码。语言:C + +。
class Shape
{
protected:
int *x;
int *y;
public:
void draw()
{
//we were supposed to add random code here.
}
};
要求创建自己选择的重载操作符,并在main中实现。我有点害怕指针,所以我决定创建一个这样的构造函数:
class Shape
{
protected:
int *x;
int *y;
public:
void draw()
{
cout<<*x<<endl;
}
Shape(){};
Shape{int a, int b)
{
x = &a; //this I thought would allow *x to act just like a normal variable.
y = &b;
}
//code for operator overloading.
};
我的印象是我已经在测试中取得了成功,但是当我继续并尝试在家里的计算机上实现它时,我意识到draw函数返回垃圾值/内存地址。其他一切都会因此受到影响。你能告诉我为什么会这样吗?这和指针的作用域有关吗?我想把指针当作常规变量来使用。我只是个学生。提前感谢!
如果这是c++,就像它看起来的那样,那么你的问题是你将指针赋值给构造函数的参数地址。
构造函数参数在调用构造函数时创建,在构造函数被销毁时销毁,因此,在构造函数被销毁后,指针将指向垃圾。将指针赋给非函数局部变量
将a和b放在堆栈中,并将x和y指针赋值给a和b的地址。这将使x和y指向堆栈中的某个位置,因此*x(和*y)的值就是堆栈中恰好在这些地址处的值。
相关文章:
- 将 std::map::emplace 与返回 shared_ptr 的函数一起使用是否正确?
- 当返回语句时,逗号运算符、大括号初始化列表和 std::unique_ptr 组合在一起
- 我是否需要将 ref 与 make_pair 一起使用才能返回引用?
- 如何将两个 jlong 数据类型转换为 jstring,然后将两个字符串连接在一起以便从 JNI 将字符串返回给 jav
- 返回对象如何与分配运算符一起工作
- pcap_dump功能在与pcap_loop一起使用时不会被调用,pcap_dispatch始终返回 0
- 在没有返回值优化的情况下将两个对象加在一起时,将创建多少个临时对象
- 如何将没有终止字符和大小的返回消息一起使用提升async_read?
- GCC 中的编译器错误,但在将 decltype 与具有尾随返回类型语法的模板化成员函数一起使用时没有 clang
- 具有参考参数的函数不与其他函数返回的值一起工作
- 如何将 std::enable_if 与自推返回类型一起使用
- 与对象一起返回时清除了内存指针
- 如何将尾随返回类型与模板化类成员一起使用
- 与"?:"操作员一起返回
- 如何将async与不返回任何内容的lambdas一起使用
- 尾随返回类型、声明和引用限定符:它们能一起工作吗?
- 指针与类一起使用会返回垃圾值
- 如何将c#数组传递给c++,并将其与附加项一起返回给c#
- Istream::tellg()与我的自定义流buf类一起使用时返回-1
- 直接使用变量(数组中的数据返回相同)或与指针一起使用