——C++訪問類別除了private、public,還有protected。函數
對外部世界來講,保護成員的行爲與私有 成員類似。spa
對於派生類來講,保護成員的行爲與公有成員類似。設計
用於數據成員時的缺陷。code
用於成員函數時的優勢。blog
對外部世界。class
關鍵字protected與private類似,在類外只能用公有類成員來訪問protected部分中的類成員。變量
對派生類。方法
關鍵字protected與public類似,派生類能夠直接訪問基類的保護成員。數據
缺陷。di
使用保護數據成員能夠簡化代碼的編寫工做(派生類能夠直接使用基類的protected數據成員,而數據成員之前一般是private成員,這將須要使用額外的基類公有訪問函數或保護函數來查看或修改基類private數據成員,而且公有訪問函數對外界開放,而protected數據成員只對派生類可見),但存在設計缺陷。
儘管如此,若數據成員是受保護的,類被設計成只能經過成員函數才能修改該數據成員,protected屬性將忽略該保護措施,容許直接訪問,這實際上使protected數據成員成爲了公有變量(對派生類而言)。
void BrassPlus::Reset(double amt) { balance = amt; // balance is protected }
所以最好對類數據成員採用私有訪問控制,不要使用保護訪問控制;同時經過基類方法使派生類可以訪問基類數據。
優勢。
對於成員函數來講,保護訪問控制頗有用,它讓派生類可以訪問公衆不能使用的內部函數。
-----