c ++指针算术和类

Jas*_*son 3 c++ pointers

所以我刚刚开始学习指针算法,我正在摆弄它的一些功能.一旦我开始尝试使用指针算法和类,我就遇到了问题.我在下面编写了以下代码:

#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.我缺少什么?

mat*_*eek 6

itsAge未初始化,因为您没有在默认构造函数中设置它.它目前是垃圾.

Cat::Cat()
: itsAge(0)
{
}
Run Code Online (Sandbox Code Playgroud)

这成为一个问题,因为家庭[1]在您初始化之后指向Cat.指针[1]相当于*(指针+ 1).