继承是把父类的代码复制到子类吗?

来源:百度知道 编辑:UC知道 时间:2024/07/03 11:24:36
我是一个学生,老师讲到继承时说道:"继承是把父类的代码复制到子类".
我有很多疑问。
我个人理解:"是父类和子类站一个内存空间而不是复制代码".
不知道哪个对
能有人帮我详细解释一下吗?

1.父类和子类在没被实例化前,都不占用内存(任何类都是)

2.类b继承类a,相当于子类b复制a代码~

估计是他讲的相当于复制,其实是父类一的属性和方法自类可以访问

子类就是把父类的方法直接'拿'过来使用
子类可以使用父类所有的不受保护的方法和变量
子类也可以有自己的方法和变量
从而使子类'超越'父类

通俗讲就是儿子继承了父亲的技能又可以学习别的技能

在C++中,
如果是属性,那么运行时每个对象在内存中都有自己属性对应的内存。
每个对象的的改属性都各占有一块内存,如果从父类继承而来,
也是一样。子类 的对象和父类的对象的属性都是有独立的内存。

函数:则是可以共用的,同一个类的对象共用一个函数。任何时候函数代码在运行时内存中只有一个拷贝。所有的对象执行时都是跳到这个函数对应的内存上来执行。如果子类继承的函数,应该也是和父类共用同一块内存。

虚函数: 每个对象都有个表的指针,执行时从这个表指针中去查找调用对应的函数。如果多重继承,可能该函数有几个不同版本,也就占用有几个不同的内存。具体调用的是哪个代码由编译器生成的代码决定。

具体解释详见《Inside the C++ Object Model》 一书。

C#虽说和C++不尽一样,不过应该也是类似的。

不是复制,你们老师表达有误,他可能只是认为这样说了你们容易理解一些