C++ cppreference示例中具有多个参数的新
从第页开始 什么是C++ cppreference示例中具有多个参数的新,c++,new-operator,C++,New Operator,从第页开始 什么是new(2,f)T做什么 什么是new(2,f)T做什么 placement new中的第二个参数可用于将参数传递给自定义T::operator new实现 下面是一个触发它的玩具示例(在输出中,您可以看到参数f=42.0被传递到T::operator new): #包括 结构T{ T(){ 标准::cout new(2,f)T;做什么 placement new中的第二个参数可用于将参数传递给自定义T::operator new实现 下面是一个触发它的玩具示例(在输出中,您可
new(2,f)T代码>做什么
什么是new(2,f)T代码>做什么
placement new中的第二个参数可用于将参数传递给自定义T::operator new
实现
下面是一个触发它的玩具示例(在输出中,您可以看到参数f=42.0
被传递到T::operator new
):
#包括
结构T{
T(){
标准::cout
new(2,f)T;
做什么
placement new中的第二个参数可用于将参数传递给自定义T::operator new
实现
下面是一个触发它的玩具示例(在输出中,您可以看到参数f=42.0
被传递到T::operator new
):
#包括
结构T{
T(){
std::cout使用网上示例中的此类技巧时要小心,它们通常很糟糕
<> > C++中的< <代码>新< /COD>关键字是C.中的以下简称
typedef struct {
int a;
} Foo;
Foo *makeFoo(int a) {
Foo *foo = (Foo *)malloc(sizeof(Foo));
foo->a = a;
}
malloc
函数为该对象保留内存,表示该对象将用作指针。new
操作符也会这样做,但默认值为sizeof(Foo)
。您看到的参数是sizeof
和align\u val\t
实例的结果。使用在线示例中的此类技巧时要小心,它们通常很糟糕
<> > C++中的< <代码>新< /COD>关键字是C.中的以下简称
typedef struct {
int a;
} Foo;
Foo *makeFoo(int a) {
Foo *foo = (Foo *)malloc(sizeof(Foo));
foo->a = a;
}
malloc
函数为该对象保留内存,表示该对象将用作指针。new
操作符也会这样做,但默认值为sizeof(Foo)
。您看到的参数是sizeof
和align\u val\t
实例的结果。有用的补充阅读:您可以使用自定义参数定义自定义new
操作符:struct t{void*操作符new(size\t s,int x,double f);}
有用的补充阅读:您可以使用自定义参数定义自定义new
运算符:struct T{void*operator new(size\T s,int x,double f);};
这不是唯一的事情。new还正式地将对象引入生活。基于malloc的示例没有(您需要它是Foo*Foo=new(malloc(sizeof(Foo))Foo;
-但这并不能解释可能的未对准)@我使用的例子是C。<代码> new < /Cord>关键字是C++唯一的。不是这个点吗?对象生命周期是问题的核心,C甚至没有对象生命周期与存储持续时间分开的概念,这使得它不适合回答这个问题。这不是唯一的事情。New也正式带来了Obj.ect to life。基于malloc的示例没有(您需要它是Foo*Foo=new(malloc(sizeof(Foo))Foo;
——但这并不能解释可能的不对齐)@我使用的例子是C。<代码>新< /COD>关键字是C++唯一的。不是点吗?对象生命周期是问题的核心,C甚至没有对象生命周期与存储持续时间分开的概念,这使得它不适合回答这个问题。
typedef struct {
int a;
} Foo;
Foo *makeFoo(int a) {
Foo *foo = (Foo *)malloc(sizeof(Foo));
foo->a = a;
}