2013-11-21 69 views
-1

我想知道是否有某种方法来声明一个变量是一个基类的成员数据,以便它不是从派生类继承。我在我的基类中有一些成员数据,它们不应该是派生类的对象的一部分,所以我想分离什么应该从什么不应该继承。有没有办法做到这一点?派生类和保护基类的成员数据

+2

私有字段/方法/属性不容易被派生类使用。会有帮助吗?也看到这里http://stackoverflow.com/questions/2950820/are-private-members-inherited-in-c – Ric

+0

@Ric但他们仍然住在对象内。您可以通过封装(如果提供或通过反射)来访问它 –

+0

请参阅最高回答中留下的评论:如果尝试使用derivedType.GetField(“f”,BindingFlags.Instance | BindingFlags.NonPublic ),即使这在技术上应该返回所有继承的成员,也不会得到任何回报。 – Ric

回答

0

如果您试图从衍生/继承类隐藏数据,请使用private访问修饰符。 是的,即使它们是遗传的,除非它们被标记为protectedpublic,否则您将无法访问它们。

+0

我在寻找更多的方法来防止派生类继承数据。如果可能的话,我想这样做以减小它们的大小。 –

+0

不确定这是可能的。如果是这种情况,最好试试其他的东西。 – Ric

+0

你有没有设法解决你的问题? – Ric

0

Ric,是的。我认为这只是C++中的一个功能而已。我真正想做的是创建一个基类,其中的成员数据带有某种前缀,以防止数据被子类继承。例如:noinherit void func1();或noinherit double x; noinherit只是我定义的一些关键字,用于定义不应由子类继承的数据。从某种意义上说,我希望能够确定孩子从父母遗传下来的基因,而不是仅仅获得父母基因全部集合的孩子,并且仅仅基于哪些基因是私人的而具有某种表型,是公共的还是受保护的,以使用遗传学比喻。

相关问题