可能重複: Does const-correctness give the compiler more room for optimization? 在過去的幾個星期,我已經開發出一種東西讓我的所有非靜態成員const如果可能的話以避免無意的編程錯誤。然而,這種做法提供了一些巨大的缺點,特別是對於實體對象,例如,如果他們選擇直接聚集這樣的實體對象而不是使用指針,那麼沒有人能夠再次調用賦值操作符。
我有一個容器,它包含一堆指向基類的指針,以及一個函數,它接受一些輸入並返回一個類,它是基類的一個子類。它返回哪個子類取決於輸入。 現在,我有一個巨大的switch語句是這樣的: class Base { ... }
class A : public Base { ... }
class B : public Base { ... }
...
class Z : public Base {
我在問是否(以及爲什麼)以下方法是a)合法和b)道德。我正在強調C++ 03,但也歡迎C++ 11的注意事項。這個想法是爲了防止派生類本身可以默認構造執行愚蠢的B::B(int foo) : A(foo) {}構造函數。 class Base {
private:
int i;
Base(int i) : i(i) {}
protected:
Ba