C++中私有和受保護關鍵字的內部機制。它們如何限制成員變量訪問。C++中如何實現私有和受保護的關鍵字
-4
A
回答
0
我不相信在不同訪問級別的方法/變量之間有任何運行時差異。這一切都是在編譯時執行的。
1
對於類對象的內存佈局,從給定的訪問說明符開始,直到下一個編譯器必須將數據成員放在增加的地址處。更一般地說,它必須使成員具有相同的訪問級別,地址不斷增加。對於不同訪問級別的成員來說,情況並非如此。
C++ 11 9.2節/ 14:」具有相同的訪問控制(第11)(非聯合)類的非靜態數據成員被分配,以便 以後構件具有類對象內的更高地址。未指定具有不同訪問控制的成員的非靜態數據分配順序 。
這是他們唯一(的影響)運行時的效果,這東西可容納措辭「內部機制」,我所知道的。
所有其餘的檢查都在編譯時。
0
我認爲私有和受保護的,都只作爲訪問說明符。只有我們可以實現向其他人提供數據訪問權限。這些訪問權限決定編譯時間。
大多數使用Private和Protected實現繼承和數據封裝。只是看到下面的例子:
class Base {
private:
int MyPrivateInt;
protected:
int MyProtectedInt;
public:
int MyPublicInt;
}
class Derived : Base
{
public:
int foo1() { return MyPrivateInt;} // Won't compile!
int foo2() { return MyProtectedInt;} // OK
int foo3() { return MyPublicInt;} // OK
};
class Unrelated
{
private:
Base B;
public:
int foo1() { return B.MyPrivateInt;} // Won't compile!
int foo2() { return B.MyProtectedInt;} // Won't compile
int foo3() { return B.MyPublicInt;} // OK
};
相關問題
- 1. 受保護的關鍵字C#
- 2. C++類(公共,私有和受保護)
- 3. 實現文件中的實例變量 - 私有與受保護
- 4. 受保護的和私有的方法
- 5. C++結構中的私有和受保護的可用性
- 6. Ruby中的私有/受保護塊?
- 7. 爲什麼Joomla不使用私人,公共和受保護的關鍵字?
- 8. 保持API調用私有/受保護
- 9. 在不受保護和受保護的工作表中實現代碼VBA Excel
- 10. 保護關鍵字
- 11. neo4j-php-client私有和受保護字段
- 12. C#的「受保護內部」是指「受保護」*或*「內部」。任何關鍵字是否意味着「受保護」*和*「內部」?
- 13. 受保護/私有繼承鑄造
- 14. 訪問受保護或私有屬性
- 15. Rails中的受保護和私有方法
- 16. 私人和受保護成員如何在PHP OOP中運行?
- 17. 聯合中的「受保護」關鍵字的用途是什麼?
- 18. 私有和受保護的OOP有什麼不同?
- 19. 如何在受測試的方法中模擬受保護/私有方法?
- 20. C++ - 訪問基類的受保護/私有成員
- 21. C++調用通用基類的私有/受保護函數
- 22. 如何在受保護的環境中實現接口成員?
- 23. 如何使用受保護的/私有靜態變量?
- 24. 受保護的內部和內部受保護有區別嗎?
- 25. javadoc所有 - 私人,公共和受保護的成員
- 26. TypeScript - 私有變量和受保護變量之間的區別
- 27. 如何訪問JasperDesign對象的私有和受保護的JRElements成員?
- 28. 如何在受保護的java類上實現接口
- 29. 如何從私有字段中獲取值到保護字段
- 30. 確保私有/受保護方法的輸入?
在可執行程序中沒有這樣的機制,它都由編譯器處理。你爲什麼想知道?你有什麼問題?或者你只是好奇? –