书上有句话,帮我解释下

谁学逆向工程 2010-01-13 07:42:51
通过使用“::”来调用祖先的类方法时,如果在继承层次结构中,在祖先和后代之间插入了新的类,后代将跳过这些中间类,从而遗漏对中间类实现的重要功能的调用。

帮我写个小代码,举个例子
...全文
206 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
hlyces 2010-01-15
  • 打赏
  • 举报
回复
123
谁学逆向工程 2010-01-15
  • 打赏
  • 举报
回复
弄错了。不是4楼。是1楼
谁学逆向工程 2010-01-15
  • 打赏
  • 举报
回复
4楼在举个例子呗?还有别的吗。你那个代码看起来很是顺理成章啊
jinjinClouded 2010-01-14
  • 打赏
  • 举报
回复
嘿嘿。。真牛啊 还祖先。。。
gcc_gun 2010-01-14
  • 打赏
  • 举报
回复
LS都是正解
flyerwing 2010-01-14
  • 打赏
  • 举报
回复
域访问吧,和C井里的点差不多了
lihan6415151528 2010-01-14
  • 打赏
  • 举报
回复
public:void Func2() { A::Func(); }

2楼这里本来就是这样的啊,觉得解释的不清楚
macrojj 2010-01-14
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 xiaoyuanyuan2009 的回复:]
引用 1 楼 matrixcl 的回复:
C/C++ codeclass A
{public:void Func() { cout < <"A::Func()" < < endl; }
};class B :public A
{public:void Func() { cout < <"B::Func()" < < endl; }
};class C :public B
{public:void Func2() { A::Func(); }
};void?-


调用的就是A类的函数,跳过B也狠正常啊!!
[/Quote]

我也觉得
class A
{
public:
void fun()
{
cout<<"A::fun"<<endl;
};
};

class B :public A
{
public:
void fun()
{
cout<<"B::fun"<<endl;
}
};

class C: public B
{
public:
void fun()
{
A::fun();
B::fun();

cout<<"C::fun"<<endl;
};
};


int main()
{
C c;
c.fun();
return 0;

}
camelisi 2010-01-14
  • 打赏
  • 举报
回复
被祖先的类雷到了...
chengzhe 2010-01-14
  • 打赏
  • 举报
回复
你看得是什么书呀 大哥翻译的可真够牛的 祖先类
lovesi3344 2010-01-14
  • 打赏
  • 举报
回复
::就是直接调用嘛
::base base是什么就是什么


[Quote=引用楼主 xiaoyuanyuan2009 的回复:]
通过使用“::”来调用祖先的类方法时,如果在继承层次结构中,在祖先和后代之间插入了新的类,后代将跳过这些中间类,从而遗漏对中间类实现的重要功能的调用。

帮我写个小代码,举个例子
[/Quote]
jdjking 2010-01-14
  • 打赏
  • 举报
回复
这是什么书啊?祖先。。。。。。。。。。。。。。。
谁学逆向工程 2010-01-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 matrixcl 的回复:]
C/C++ codeclass A
{public:void Func() { cout<<"A::Func()"<< endl; }
};class B :public A
{public:void Func() { cout<<"B::Func()"<< endl; }
};class C :public B
{public:void Func2() { A::Func(); }
};void?-
[/Quote]

调用的就是A类的函数,跳过B也狠正常啊!!
jackzhhuang 2010-01-13
  • 打赏
  • 举报
回复
实际上就是直接调用爷爷类的函数
路飞-总裁 2010-01-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 matrixcl 的回复:]
C/C++ codeclass A
{public:void Func() { cout<<"A::Func()"<< endl; }
};class B :public A
{public:void Func() { cout<<"B::Func()"<< endl; }
};class C :public B
{public:void Func2() { A::Func(); }
};void?-
[/Quote]

就是这样!
matrixcl 2010-01-13
  • 打赏
  • 举报
回复


class A
{
public:
void Func() { cout << "A::Func()" << endl; }
};

class B : public A
{
public:
void Func() { cout << "B::Func()" << endl; }
};

class C : public B
{
public:
void Func2() { A::Func(); }
};

void main()
{
C c;
c.Func2(); // 输出A::Func(), 跳过了B::Func();
}

64,281

社区成员

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

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