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. Rails中的受保护和私有方法
- 15. 如何在受测试的方法中模拟受保护/私有方法?
- 16. C++调用通用基类的私有/受保护函数
- 17. 如何在受保护的环境中实现接口成员?
- 18. 受保护的内部和内部受保护有区别吗?
- 19. TypeScript - 私有变量和受保护变量之间的区别
- 20. javadoc所有 - 私人,公共和受保护的成员
- 21. 如何访问JasperDesign对象的私有和受保护的JRElements成员?
- 22. 如何在受保护的java类上实现接口
- 23. 确保私有/受保护方法的输入?
- 24. 如何模拟受保护的字段?
- 25. 序列图中的私有/受保护函数
- 26. PHP类中受保护/私有的重要性
- 27. 从同一类的另一个实例中设置受保护/私有属性
- 28. C++继承中的保护和私有成员变量
- 29. C++受保护的访问
- 30. 公共私人和保护在objective-c
在可执行程序中没有这样的机制,它都由编译器处理。你为什么想知道?你有什么问题?或者你只是好奇? –