The*_*ask 3 c++ constructor operator-overloading
对不起,如果"新呼叫"不是C++ - 术语.如果不是,请告诉我什么是正确的术语.我是一个以C++开头的C程序员.我有struct A我想在new运算符中使用参数化器初始化它.像这样:
A* a = new A(foo, baa);
所以,我试着用它来定义函数: void* A::operator new(T a, T B) { ... }
但我得到一个编译器错误:
error: 'operator new' takes type size_t ('unsigned int') as first parameter
Run Code Online (Sandbox Code Playgroud)
另外,不确定它是否相关但是size_t已经定义了类型的重载参数的函数,如下所示:
void* A::operator new(size_t size) { ... }
你不需要为此重载operator new.你只需要一个构造函数:
class A
{
public:
A(FooType foo, BaaType baa);
};
A::A(FooType foo, BaaType baa)
{
// initialize object here
}
Run Code Online (Sandbox Code Playgroud)
然后你可以写(假设你已经获得了foo类型的变量,FooType等等):
A *a = new A(foo, baa);
Run Code Online (Sandbox Code Playgroud)