假設我想調用我的對象的外部函數來在正文構造函數中執行一些檢查。由於構造函數的主體完成執行時對象的生命週期開始,它是不安全的設計嗎?C++:對象的生命週期和外部函數
struct A;
void check(A const&) { /* */ }
struct A
{
A() { check(*this); }
};
我的意思是,我打電話和外部功能與尚未活着的對象。它是不確定的行爲?相關問題:如果我把這個檢查函數作爲一個成員函數(靜態或非靜態),那麼標準中有關在構造函數外但在類內部使用非活動對象的說法是什麼?
它在一個類和它的用戶的觀點(一種在課堂上還是在課外生活時間)之間的生命期概念上有任何不同?
[C++ FAQ](https://isocpp.org/wiki/faq/ctors#using-this-inctors)有關於此的信息。 –
只要該函數不是虛擬成員並且不在初始化列表中,它應該沒問題 – KABoissonneault
const&是一個引用,在檢查開始時既不初始化,也不在函數結束時銷燬。除了構造函數內部的對象完全構造。我在這個代碼中看不到任何問題 – Brahim