【发布时间】:2014-02-10 06:06:43
【问题描述】:
抱歉,如果“新调用”不是 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
另外,不确定是否相关,但是size_t类型的重载参数的函数已经定义了,像这样:
void* A::operator new(size_t size) { ... }
【问题讨论】:
-
最好的方法是
A a(foo, baa);,但您不需要提供new重载;已经内置了一个。 -
你想重载
operator new(创建你自己的内存分配器)还是只想给A一个带有两个参数的构造函数...? -
@chris: 就像通常的方法一样?另一个相关的问题:此方法能否返回与
A*和void*不同的类型? -
@dvnrrs:最后一个选项:
A一个接受两个参数的构造函数...抱歉,如果我不够清楚。 -
嗯,我一直在支持这个问题,因为在整个视图中(所有当前的 3 个答案),它为一个叛逆的 c 程序员提供了一个很好的画面,重载有什么区别@ 987654335@ vs 编写构造函数。如果全部合并,可能是规范的候选者。
标签: c++ constructor operator-overloading