繁体   English   中英

构造函数和成员函数中的指针返回不同的地址

[英]Pointer in constructor and member function return different addresses

你好,我编译程序时遇到问题。 为什么intArray指针在同一对象的构造函数和成员函数display()中给出不同的地址?谢谢!

#include<iostream>
using namespace std;
class MyClass
{   private:
      int* intArray;
      int arraySize;
    public:
      MyClass(int*,int);
      ~MyClass()
      {delete []intArray;};
      void display();
};
MyClass::MyClass(int intData[],int arrSize)
{     int *intArray = new int[arrSize];
      cout<<intArray<<"   "<<endl;
};
void MyClass::display()
{     cout<<intArray<<"   "<<endl;
}
int main()
{     int Data[10]={9,8,7,6,5,4,3,2,1,0};
      MyClass obj1(Data,10);
      obj1.display();
}

在构造函数中,您声明一个隐藏成员的局部变量。 两个成员都未初始化,因此调用display将显示未初始化的值。

您可能想要一些类似的东西

MyClass::MyClass(int intData[],int arrSize) :
    intArray(new int[arrSize]),
    arraySize(arrSize)
{
    // assuming the input array specifies initial values
    std::copy(intData, intData+arrSize, intArray);
}

由于您正在处理指向已分配内存的原始指针,因此请记住遵循“三规则”为类提供有效的复制语义。 然后,一旦您对指针杂耍技巧感到满意,就将其扔掉并改用std::vector

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM