派生类是否会复制基类的非static成员函数

chenpping 2011-11-01 06:15:58
设派生类直接继承了一个基类的非static成员函数,它是否会拷贝一份成员函数的代码至内存中
...全文
75 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
mskmc_mc 2011-11-01
  • 打赏
  • 举报
回复
基类成员函数 不会与 派生类成员函数形成重载
你说还会复制基类成员函数到派生类吗?

要么为什么派生类中可以静态调用基类的成员函数
所为静态调用
基类::函数();
ithzhang 2011-11-01
  • 打赏
  • 举报
回复
成员函数在内部是以普通函数的形式存在的。
神农氏 2011-11-01
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 chenpping 的回复:]

楼上没理解,我不是说的类对象。
ok,假设我们有以下的码
class base
{
public:
void func();
private:
int a;
};

class derived:public base
{
private:
int b;
};

假设我们base b;然后我们可以b.func来调用b……
[/Quote]
编译器首先查找本类,没有才查父类。
zzcmx2008 2011-11-01
  • 打赏
  • 举报
回复
不会,对于一般的非虚函数,已经继承到派生类中了,因为函数只是放在一个类似于全局的表中,不会因为对象的多少,而变化。若为虚函数,则将派生类中虚函数表对于基类函数的位置替换成派生类的函数地址。
北辰天云 2011-11-01
  • 打赏
  • 举报
回复
楼上正解,只是编译查找问题
turing-complete 2011-11-01
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 chenpping 的回复:]

楼上没理解,我不是说的类对象。
ok,假设我们有以下的码
class base
{
public:
void func();
private:
int a;
};

class derived:public base
{
private:
int b;
};

假设我们base b;然后我们可以b.func来调用b……
[/Quote]

从derived的定义中找函数func的定义,没找到则找基类,没找到则找基类,没找到则找基类, 。。。。。。
chenpping 2011-11-01
  • 打赏
  • 举报
回复
楼上没理解,我不是说的类对象。
ok,假设我们有以下的码
class base
{
public:
void func();
private:
int a;
};

class derived:public base
{
private:
int b;
};

假设我们base b;然后我们可以b.func来调用base的成员函数。如果我们定义一个derived d。这时调用d.func。编译器如何判决。

神农氏 2011-11-01
  • 打赏
  • 举报
回复
不存在复制的问题,每个类的成员函数编译器编译出来就是一个全局的函数,只是参数中加了一个this而已。所以,函数在类对象中不占空间。
mengmingtao 2011-11-01
  • 打赏
  • 举报
回复
不会。

64,632

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧