所以我刚刚开始学习指针算法,我正在摆弄它的一些功能.一旦我开始尝试使用指针算法和类,我就遇到了问题.我在下面编写了以下代码:
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
class Cat
{
public:
Cat();
~Cat();
int GetAge() { return itsAge; }
void SetAge(int age) { itsAge = age; }
private:
int itsAge;
};
Cat::Cat()
{
}
Cat::~Cat()
{
}
int _tmain(int argc, _TCHAR* argv[])
{
Cat *Family = new Cat[5];
Family = Family + 1;
Family->SetAge(3);
cout << Family[1].GetAge()<< endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在我看来,我正在创建一个名为Family的指针,它将指向一个Cat对象数组.该指针将表示Family [0]的地址.然后,在下一行,我通过向指针本身添加1来指向系列指向新地址(因此编译器应该将此作为将地址槽向上移动到数组中的下一个元素,Family [1]).然后我将年龄设置为3并尝试输出家庭[1]的年龄值,但我得到的答案是-842150451而不是3.我缺少什么?
itsAge未初始化,因为您没有在默认构造函数中设置它.它目前是垃圾.
Cat::Cat()
: itsAge(0)
{
}
Run Code Online (Sandbox Code Playgroud)
这成为一个问题,因为家庭[1]在您初始化之后指向Cat.指针[1]相当于*(指针+ 1).
| 归档时间: |
|
| 查看次数: |
675 次 |
| 最近记录: |