#include <iostream>
class MyClass
{
private:
double *number;
size_t size;
public:
MyClass(size_t n) : number(new double[n]), size(n)
{
std::cout << "Main Cnstr\n";
for (int i = 0; i < size; ++i)
arr[i] = i;
}
void *operator new(size_t size);
void operator delete(void *ptr);
};
构造函数里的number( new double[n]),这个new没有调用自己写的operator new,请问该怎么让它调用。
number是double的指针,你用new怎么可能调用到类的。
这是类的new重载,只有你new这个类时候才会调用:
https://blog.csdn.net/zxx910509/article/details/64905107
new double[n]执行的是 new[],而不是new
以下代码供参考,问题解决请点采纳
#include <stdlib.h>
#include <iostream>
using namespace std;
void *operator new[](size_t size)
{
cout << "new" << endl;
return malloc(size);
}
void operator delete[](void *ptr)
{
cout << "delete" << endl;
free(ptr);
}
class MyClass
{
private:
double *number;
size_t size;
public:
MyClass(size_t n) : number(new double[n]), size(n)
{
std::cout << "Main Cnstr\n";
for (int i = 0; i < (int)size; ++i)
number[i] = i; //这里是number不是arr
}
};
int main()
{
MyClass mc(10);
}
new
Main Cnstr
Press any key to continue . . .