3
假設我有兩個模板類A
和B
:如何避免使用初始化程序列表構建臨時對象時的創建(和刪除)?
// Non-modifiable template class.
template<class T>
class A{
private:
T* ptr;
int size;
public:
A(int const inputSize):
ptr{ new T[ inputSize ] }, size{ inputSize }
{}
};
// Modifiable template class.
template<class T>
class B{
private:
A<T> a_obj;
int idx;
public:
B(int const inputSize):
a_obj{ A<T>{ inputSize } }, idx{ 0 } //temporary object creation?
{}
};
B
具有A
類型的需要的B
施工時要構造一個成員變量。在構建B
(如果發生的話)時,是否有辦法避免臨時構建類型爲A
的對象?另外請假設我們不能修改A
模板類。
我試圖得到的是一個類似的功能,我們看到emplace_back()
與矢量中的push_back()
相比:對象是在這個地方構建而不是兩次。
謝謝。有時候我腦海中的某些明顯信息會被阻塞,當我意識到這一點時,我會問自己「我到底在想什麼?」。 – Farzad
@Farzad:不用擔心!很多事情在被指出後顯得很明顯,但是你編碼的內容也有很多直觀的意義。乾杯。 –