C# 与C++:继承细节

C# vs C++: inheritance specifics

本文关键字:继承 细节 C++      更新时间:2023-10-16

C# 和 C++ OOP 标准定义之间的可见差异可以算作什么?我对与重载/覆盖方法的可见性相关的任何内容特别感兴趣。

似乎 C# 在类链中实现了基于堆栈调用顺序的C++继承顺序的子集;这是真的吗?或者 C# OOP 与C++不同?(当然,C# 具有本机反射支持,但我更感兴趣的是查找与继承或可能与合成相关的问题)。

是否存在一种众所周知的情况,即 C++ 中的class N: .. class B: A { }无法访问 C# 中可能的基类数据(在任何可能的情况下)?


我强烈反对承认这个问题"已经回答过"。没有说"内部",抽象类无法清楚地评估为C++受保护的构造函数/虚拟构造函数类(整个接口与C++不同)。因此,如果我有机会打开赏金,请不要关闭赏金 - 肯定有更多的差异。

c++支持多重继承,而C#不支持,这可能是最大的区别。

我相信

你可以找到一整本关于这些东西的书。一个很大的变化是在 C# 中定义类时,只能从一个基类继承。 C++可以从多个基类继承。

是否有众所周知的情况,其中类 N:..class B:A { } 在 C++ 无法访问基类数据(在任何可能的情况下) 条件)在 C# 中可能吗?

如果基类是受保护的还是公共的。

受保护的关键字是成员访问修饰符。受保护的成员 可在其类中访问,也可由派生类实例访问。(来源:http://msdn.microsoft.com/en-us/library/bcd5672a.aspx)