在 C++ 中表达 new (&t) T(t) 的 &t 是什么意思?
what is the meaning for &t for expression new (&t) T(t) in c++?
在 c++ 中表达式 new (&t) T(t) 的 &t 是什么意思?
如标题所示。
T t;
new (&t) T(t);
这称为"放置新"语法。 T
值是在 &t
指定的地址中构造的。
此示例有点偏离,因为它使用复制构造函数在现有 T 的确切位置创建新 T。 我认为用明确的地址来解释这个概念更容易。 这是此代码的变体。
T t;
void* pAddress = malloc(sizeof(T));
new (pAddress) T(t);
// Or just creating a T without a copy ctor
new (pAddress) T();
这是
Placement Syntax
;此声明:
new (&t) T(t);
在地址t
( &t
) 处构造一个对象,但它不分配内存。
这是放置 new 的示例,其中容器是使用 Type T
创建t
对象的起始地址
示例代码使用复制构造函数创建类型 T
的对象,该构造函数接受类型 T
的参数并将对象放在对象t
的内存位置。
只是为了构思这个想法,将 Type 视为一个整数,所以你的模板代码看起来像
int t;
new (&t) int(t);
所以显然,新的放置是多余的和令人困惑的。编写这种奇数代码的唯一原因可能是使用复制构造函数强制初始化对象,除了复制用户可能感兴趣的对象的内容外,该构造函数可能还有一些额外的代码。
相关文章:
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 标准 N3337 5.2.10 第 7 条中的C++"类型"是什么意思?
- "类模板示例<int>;"语句对 C++11 是什么意思?
- 线应该是什么意思
- "CID"在AT+HTTPPARA= "CID" ,1中是什么意思
- 表达式"b=(b-x)&x"是什么意思?
- 这个表达是什么意思?
- 此代码验证公式是什么意思?
- 跟踪日志中的T.11803()是什么意思?
- 这个额外的关键字在这个 c++ 类声明中是什么意思?
- * 和 ** 在 C++ 函数声明中是什么意思?
- _T("xyz")是什么意思?
- #define Dbg(fmt,..) (0) 是什么意思? 警告:表达式无效
- 这行代码到底是什么意思?
- 在命名空间名称之前加上 :: 是什么意思?
- 从字符数组的元素中减去'a'是什么意思
- "friend"关键字在C++中是什么意思?
- 减法中的"0"是什么意思?
- 字符数组前面的加号是什么意思?
- 这里的字符串函数是什么意思