將構造函數,析構函數聲明為私有和保護的,那么對象如何創建


已經不能從外部調用構造函數了,但是對象必須被構造,應該如何解決,麻煩大家幫忙說明,關於構造,析構函數聲明為私有和保護時的用法???
 
提出這個問題,說明你已經對c++有所思考了。

從語法上來講,一個函數被聲明為protected或者private,那么這個函數就不能從“外部”直接被調用了。
對於protected的函數,子類的“內部”的其他函數可以調用之。
而對於private的函數,只能被本類“內部”的其他函數說調用。

語法上就是這么規定的,你肯定也知道的咯。
那么為什么有時候將構造函數或者析構函數聲明為protected的或者private的?

通常使用的場景如下:
1。如果你不想讓外面的用戶直接構造一個類(假設這個類的名字為A)的對象,而希望用戶只能構造這個類A的子類,那你就可以將類A的構造函數/析構函數聲明為protected,而將類A的子類的構造函數/析構函數聲明為public。例如:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM