class Static {
public:
Static(std::vector<int> v) {
if (v.size() ! = 3) {
//...
}
}
~Static() {
std::cout << "Static dtor\n";
}
};
我有類名爲Static
,它的構造有一個說法v
,我怎麼能檢查v
「大小,如果v.size() < 3
,構造函數出口
很多答案都說可以通過使用throw
來解決一個例外,但問題在於析構函數不會被調用。
所以我不知道return
是否會確定爲例子:
class Static {
public:
Static(std::vector<int> v) {
if (v.size() ! = 3) {
//to log some error info
return;
}
}
~Static() {
std::cout << "Static dtor\n";
}
};
,對象是永遠完全構建,所以不應該調用析構函數*。 –
「很多答案都說可以通過拋出異常來解決,但問題是析構函數不會被調用」 - 當然析構函數不會被調用 - 對象還沒有完全構造。 –
如果出現異常,而不調用'〜Static',則調用已初始化成員的析構函數。 – Jarod42