首先是这个问题:
e75d5bcf7167.htmlhttp://topic.csdn.net/u/20121022/11/af7bc053-b07a-41ee-8282-e75d5bcf7167.html
,没有获得答案~如果有知道的朋友还请指教;
其次是一个类中重写new的问题:
一个类包含一个double数组,这个数组是靠一个double*成员来引用的,如果自己重写new,怎么获得重写后new表达式返回的指针呢?如果说不需要获得指针,那么如何为这个double*赋值初始化呢~多谢各位帮助~

解决方案 »

  1.   

    double*p = new double(n);这里就是你分配的堆中的内存。你想初始化,在给他memset即可。
      

  2.   

    不理解为什么要重写new啊?
    你自己重写构造函数不就可以了?就能满足你所有的变化了。难道你需要的是:double * p = wokao double;p就初始化好了?
      

  3.   

    细致的说是这样的!!
    class CSB
    {
    public:
      CSB(int nLength){
         m=new double[nLength];
       }
    private:
       double * m;
    }
    这个类的对象,频繁的产生和销毁!为效率!!!!!!!!!!!!重写类中operator new!也就是new CSB();之后的CSB构造函数怎么知道new操作符返回的指针!new只能申请一块内存,至于该内存返回的指针,如何交给构造函数!!!!
    对重写new有异议的绕行!
    对不知道重写new的绕行!
    对不知道有几种new的绕行!
      

  4.   

    不好意思,没看清楚,我以为new一个类
      

  5.   

    但是this指针不太好,不太安全,用起来没法计算偏移量
      

  6.   


    class CSB
    {
    public:
      static double * m;  CSB(int nLength){
       if (!m)
         m=new double[nLength];
      }
    }这符合只申请一块内存的要求吧?
      

  7.   

    哥们看来我需要详细跟你讲一下问题,你还是没明白我的意思~:
    做数据采集中,每次采集出来的数组有长有短,并带有附加信息,用一个类去包装这个数组,那么这个类的对象内附加信息的空间需求是已知的,但是数组大小是不确定的,如果用自定义的new operator,虽然能将类似CSB的所有对象分配到内存池中,也可以根据所需空间申请每个单独对象的大小,但是,每个对象内的m所引用的位置无法得知,因此无法在构造函数内使用memcpy。这就是全部的问题,提炼出来就是:如何在一个类的构造函数中获得该对象已分配内存的首地址,虽然this是首地址,但是由于虚表是否存在?不安全:安全。
      

  8.   

    哥们看来我需要详细跟你讲一下问题,你还是没明白我的意思~:
    做数据采集中,每次采集出来的数组有长有短,并带有附加信息,用一个类去包装这个数组,那么这个类的对象内附加信息的空间需求是已知的,但是数组大小是不确定的,如果用自定义的new operator,虽然能将类似CSB的所有对象分配到内存池中,也可以根据所需空间申请每个单独对象的大小,但是,每个对象内的m所引用的位置无法得知,因此无法在构造函数内使用memcpy。这就是全部的问题,提炼出来就是:如何在一个类的构造函数中获得该对象已分配内存的首地址,虽然this是首地址,但是由于虚表是否存在?不安全:安全。