2 u011383185 u011383185 于 2013.11.17 13:15 提问

关于C++将类时,类中的数组需不需要用指针建立的问题

如 我有class A{ private: int number[1000]};还是 class A{ private: int* number}然后在具体的初始化时在动态空间。由于我们在确立对象时,会根据动态去创建。A *test;test=new A;这个样子 ,上述两种做法的却别大吗?我估计二种做法都是动态内存的,只是第一种会导致类所有变量会连续,而第二种可能分散(因为他有二次申请内存的过程),是这样吗,各位大牛!

1个回答

hongshaohu01
hongshaohu01   2013.11.18 09:17
已采纳

两种方式没什么区别。只不过第二种内存利用效率更好一些。
第一种,会直接分配int number[1000]。占用内存很大,如果不是立马要使用此数组,则纯属浪费内存。
第二种,只是分配了一个指向整型变量的指针所占用的内存空间。
两种方式中,对象的内存都是一次性分配的。只不过,int* number中存的地址指向其他地方,就相当于给成员变量重新赋值。
以上是我个人的看法。

u011383185
u011383185 谢谢,回答的挺好的。我也是这么认为的
4 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
类创建对象和类指针创建对象的内存表现以及区别
大家好,我是一个C++的初学者,所以不免要学习一下C++的面向对象和内存机制,我自己也一直没有弄清楚一个问题:                     注:Student 是一个学生类;                     Student stu;
【4.17】建立一个对象数组,内放6个学生的数据(学号、成绩),用指针指向数组首元素,输出第2,4,6个学生的数剧。
 #include  using namespace std;  class Student{  public:     Student(int num,int sco);      void disp();  private:    int number,score;  };    Student::Student(int num,int sco) 
采用new运算符创建一个指向二维数组的指针的两种方式
C++中引入了new运算符,用于动态地申请空间。现简单解析其用法。 一、创建单个元素 (1) char * p = new char;     这种方式申明了一个指向一个字符空间的指针变量;然而,这个字符空间中存储什么内容这条语句并没有给出,即没有给这个字符空间初始化。        (2)char * p = new char();    这种方式先申明了一个指向一个字符空间的指针变量
C/C++函数指针和函数指针数组用法
#include "iostream" using namespace std; void fun2(){ cout<<"this is 2"<<endl; } void fun3(){ cout<<"this is 3"<<endl; } void fun4(){ cout<<"this is 4"<<endl; } int main() { //方式一 c
【C】使用指针对数组中的元素换位问题
首先一条比较简单的问题: 输入10个整数,将其中最小的数字与第一个数字对换,把最大的数与最后一个数对换。 编写3个函数:(1)输入10个数字(2)进行处理(3)输出10个数字 思想如下图,使用一个长度为11的数组的第1~10位置存储这10个数,这样既符合人的思维又利用a[0]作为数据交换时候的临时存储空间, 代码如下,实现起来非常简单,主要是注意,C语言的指针是如何操作的,包括声明
成为C++高手之指针与数组
定义一个指针变量:int * a=NULL; int 是指针的类型,其实应该说是指针指向的数据的类型。
C/C++创建二维数组/指针数组
三个方法: 1.用两层vector模版直接做。 2.用一维数组模拟二维,即int * p = new int [x * y];分配一个x * y大的数组,然后要用的时候把二维下标映射到一维中,这样做的最大好处是,分配的数组空间是连续的,像一个真正的二维数组,缺点是用起来不像二维数组,得做下标映射。 3.先分配一组指向数组的指针,然后为每一个指针赋值,使它指向一块分配出来数组。这样做的好处是用
浅谈c/c++中类的拷贝构造函数和重载赋值函数
拷贝构造函数   拷贝构造函数,顾名思义,在拷贝的过程中进行构造类对象。首先看一个例子进行理解。 一个例子 8 #include<iostream> 10 using namespace std; 11 12 class copyconstructor 13 { 14 static int objectCount; 15 public: 16 c
曾经进公司面试的C语言有关指针和数组的笔试题
原题如下: #include int main(void) { int i , j ; unsigned int Array_A[32]; unsigned int *pPointer; i = 0x0008 ; //测试i printf("i=%d\n",i) ; pPointer = Array_A ; *(pPointer++)=i++ ; //测试i pr
C++简单类(构造函数,析构函数以及拷贝构造函数)的实现
C++简单类的实现,包括构造函数,析构函数以及拷贝构造函数