由編譯器合成的默認拷貝構造函數爲 未定義自己的類做了正確的事情:它將 所有成員從一個對象複製到另一個對象。C++編譯器如何合成默認拷貝構造函數
我想做類似的事情。我想寫一個方法
template <typename T>
T f(const T& obj) {
// for each member var i of obj, I want to call some method g(obj.i)
}
現在我不知道什麼是成員變量的名稱。如果這是 複製構造函數,我可以調用賦值運算符而不是g。
很明顯,編譯器會這樣做(但也可以在它推斷出 爲類的成員的名稱後執行此操作)。是否有可能爲任何T類做這個 ?
如果它是一個POD那麼爲什麼不使用memcpy? – marcinj 2012-02-22 16:09:08
@luskan:想法是在每個成員上調用一個任意函數'g',而不是複製每個成員。 – 2012-02-22 16:16:20
不,在您定義自己的時候,不可能重新獲得默認拷貝構造函數的功能,遺憾的是 – 2012-02-22 16:17:45