【发布时间】:2013-10-30 04:13:11
【问题描述】:
什么可以算作 C# 和 C++ OOP 标准定义之间的明显差异?我对任何与重载/覆盖方法的可见性相关的东西都特别感兴趣。
似乎C#在类链中实现了基于堆栈调用顺序的C++继承顺序的子集;真的吗?还是 C# OOP 与 C++ 不同? (当然,C# 具有原生反射支持,但我更感兴趣的是查找与继承或合成相关的问题。
是否存在众所周知的情况,即 C++ 中的 class N: .. class B: A { } 无法访问 C# 中可能的基类数据(在任何可能的条件下)?
我强烈反对将此问题视为“已回答”。 abstract classes can't be clearly evaluated to C++ protected constructor / virtual constructor classes(并且整个接口与 C++ 不同)没有提及“内部”。因此,如果我有机会打开它,请不要关闭赏金 - 肯定会有更多差异。
【问题讨论】:
-
您所说的“C# 根据类链中的堆栈调用顺序实现了 C++ 继承顺序的子集”是什么意思?这句话对我来说没有意义。
-
@BassamAlugili 这个问题是关于 C# 和 C++ 继承之间的一个特殊区别。这个问题要求所有的差异,反而使它“过于宽泛”。
-
定义“任何可能的条件”。了解基类的内存布局后,您可以直接访问它所在的内存以读取或更改对象的私有成员。
标签: c# c++ inheritance porting