这"new"语法是什么意思?
what does this "new" syntax mean?
最近我读了一段这样的代码:
template <unsigned long size>
class FooBase
{
bool m_bValid;
char m_data[size];
};
template <class T>
class Foo : public FooBase<sizeof(T)>
{
// it's constructor
Foo(){};
Foo(T const & t) {construct(t); m_bValid = (true);}
T const * const GetT() const { return reinterpret_cast<T const * const>(m_data); }
T * const GetT() { return reinterpret_cast<T * const>(m_data);}
// could anyone help me understand this line??
void construct(T const & t) {new (GetT()) T(t);}
};
我已经对代码进行了切片以确保它没有那么复杂,主要问题是关于construct(T const & t)
函数。
new (GetT()) T(t);
到底是什么意思?
顺便说一句,哪个版本的GetT()
叫?
new (GetT()) T(t);
到底是什么意思?
它是放置新的,它允许您将对象放置在内存中的特定位置,该位置由 Get()
返回。
哪个版本的
GetT()
被称为?
第二个。
每当编译器可以选择 const 和非 const 函数时,它都会选择非 const 版本。
具体来说,在这种情况下,正如@James在评论中指出的那样:
非常量版本被优先选择,因为调用它的成员函数是非常量。
这
称为"新放置"。
这意味着您在给定的内存缓冲区上创建一个新对象。
new (buffer) T(); //means it will instantiate an object T in the buffer.
这允许您拥有内存缓冲区和自定义分配器,而无需从操作系统请求和分配新内存。
阅读以下内容:"新放置"有什么用途?
这
看起来像一个放置新调用。此处未分配内存。new 只是返回括号中的地址,并在虚拟构造的对象上调用构造函数。
相关文章:
- 这个语法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) 是什么意思? 警告:表达式无效
- 这行代码到底是什么意思?
- 当我们说在执行程序时将操作系统的控制权传递给main()函数时,我们的意思是什么
- 这句话在c++中的意思是什么
- 这个typedef的意思是什么
- 这句话的意思是什么
- 意思是什么
- 这个句法的意思是什么?