社区
C语言
帖子详情
基类A,类B直接继承A,即PUBLIC A。那么,如果A 改变了,B是否需要重新编译?
iamxia
2002-11-15 03:44:19
基类A,类B直接继承A,即PUBLIC A。那么,如果A 改变了,B是否需要重新编译?
还是如果B涉及到A改动的地方就需要重新编译?
...全文
106
11
打赏
收藏
基类A,类B直接继承A,即PUBLIC A。那么,如果A 改变了,B是否需要重新编译?
基类A,类B直接继承A,即PUBLIC A。那么,如果A 改变了,B是否需要重新编译? 还是如果B涉及到A改动的地方就需要重新编译?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jyc_nj
2002-11-18
打赏
举报
回复
要.
public的继承关系,使得B中含有A的部分(一般是在开头位置).含A的部分包括A的成员变量(这个顺序一般和在A中声明的顺序一致),包括A的成员函数,是些offset和vptr, 等等, 这些都有可能因为A的重新编译而有改变.
所以,为保证正确,还是重新编译的好.
HaiFen
2002-11-15
打赏
举报
回复
xiaoyunet(快乐的小猪):只要A的声明变了就要重新编译,因为size也许没
变,但各成员的位置可能变了。
HaiFen
2002-11-15
打赏
举报
回复
如果改动A的声明,要!
如果改动A的实现,不要,relink就OK了!
xiaoyunet
2002-11-15
打赏
举报
回复
这个问题是这样的,如果A的size没有变,B是不需要重新编译的,当然A会重新编译。为什么这样呢,因为编译器在编译时需要确定class 的size,关于这一点,C++之父有讲,为了避免从新编译,可以使用handle类,或者是虚基类,这样不管A怎么变,B都不用重新编译。
muche
2002-11-15
打赏
举报
回复
肯定要的!!
favorit
2002-11-15
打赏
举报
回复
当然要!
vanhui
2002-11-15
打赏
举报
回复
当然要的啦。
caizzrr
2002-11-15
打赏
举报
回复
应该要
shinedreamnt
2002-11-15
打赏
举报
回复
最好应该重新编译,但我不能十分确认,这也是个有意思的问题,比如A
就是改了一点(return 1; 变成return 2;)也许不会有关系,我觉得这可能取决于
编译器的设计和你改动的大小。
efanl
2002-11-15
打赏
举报
回复
凡是用到了A的地方都要重新编译, 不管有没有涉及改动的地方,
毕竟不是DLL呀~~~
cwanter
2002-11-15
打赏
举报
回复
要。
java锁机制
基
类
AbstractQueuedSynchronizer从设计到实现到应用
并以java锁机制实现
基
类
AbstractQueuedSynchronizer的实现为例,从
类
(核心属性、方法)设计思路,到对关键代码做注释分析,再到以流程图方式直观解释流程;最后介绍了AbstractQueuedSynchronizer的应用,即如何用它...
229-C++
继承
与多态(理解虚
基
类
和虚
继承
)
多重
继承
好处是代码的复用,相当于一个派生
类
有多个
基
类
。 既从A
继承
又从B
继承
,C是从A,B多
继承
而来; C有2个
基
类
:A和B; C可以把A和B的成员都
继承
而来,复用起来 虚
基
类
拥有纯虚函数的
类
称为 虚
基
类
被虚
继承
的
类
称作虚
基
类
,vbptr和vbtable virtual的用法: 1、修饰成员方法是虚函数 2、可以修饰
继承
方式,是虚
继承
。被虚
继承
的
类
,称作虚
基
类
A被B虚
继承
,所以A是虚
基
类
我们打开命令提示符来看看 A被B虚
继承
,所以A是虚
基
类
A被虚
继承
,A本身内存布局没有变化 我
基
类
与派生
类
1.
基
类
和派生
类
的一些基本概念 class B : A{} A是一个
基
类
,B是一个派生
类
. 一个
类
最多只允许从一个
类
中派生. class C : B{} B还可以充当C的派生
类
继承
总是隐式为
public
的,System.Object是所有
类
的根
编译
器会把你的
类
悄悄的
编译
成 class A : System.Object{} 2.调用
基
类
的构造函数 class B : A {
public
B(...
由抽象
基
类
继承
得到的派生
类
肯定是具体
类
吗?
不一定是。参见介绍2017标准的《C++程序设计精要教程》,当所有
基
类
以及
基
类
的
基
类
等等定义的纯虚函数,在派生
类
及其定义纯虚函数的
基
类
之下的
类
中定义了相应(纯)虚函数的函数体,并且派生
类
没有自定义新的纯虚函数,则该派生
类
是具体
类
。 最简单的例子如下,派生
类
B不是具体
类
: struct A{ //定义抽象
基
类
virtual void f()=0; }A*p; class B:
public
A{ //对于这种
继承
,A是父
类
,B是子
类
...
基
类
成员的
public
访问权限在派生
类
中变为_c++中的
继承
类
的
继承
,是新的
类
从已有
类
那里得到已有的特性。从另一个角度来看这个问题,从已有
类
产生新
类
的过程就是
类
的派生。派生
类
的定义class 派生
类
名:
继承
方式
基
类
名1,
继承
方式
基
类
名2 { 派生
类
成员声明 }多
继承
和单
继承
的UML表示访问控制
基
类
的成员可以有
public
(公有)、protected(保护)和private(私有)三种访问属性。
基
类
的自身成员可以对
基
类
中任何一个其他成员进行访问,...
C语言
69,382
社区成员
243,073
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章