研究一下这个代码,为什么得到这么奇怪的结果!!!

zzyjsjcom 2007-08-01 05:32:50
#include <iostream>
using namespace std;

class B
{
public:
B() {cout << "B::B() " << endl;}
void f() {cout << "B:f() " << endl;}
private:

};

class D
{
public:
D(){cout << "D::D()" << endl;}
void f() { void B::f(); }
private:

};

int main()
{
D d;
d.f();
return 0;
}
...全文
110 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzyjsjcom 2007-08-01
  • 打赏
  • 举报
回复
谢谢
yangar9179 2007-08-01
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;

class B
{
public:
B() {cout << "B::B() " << endl;}
void f() {cout << "B:f() " << endl;}
private:

};

class D
{
public:
D(){cout << "D::D()" << endl;}
void f() { B b;b.f(); }
private:

};

int main()
{
D d;
d.f();
getchar();
return 0;
}
jixingzhong 2007-08-01
  • 打赏
  • 举报
回复
class B
{
public:
B() {cout << "B::B() " << endl;}
static void f() {cout << "B:f() " << endl;} //定义 static 方法
private:

};

class D
{
public:
D(){cout << "D::D()" << endl;}
void f() { B::f(); } //OK, 注意不要前面的 返回类型
private:

};
skywing918 2007-08-01
  • 打赏
  • 举报
回复
结果是什么没发上来啊?
jixingzhong 2007-08-01
  • 打赏
  • 举报
回复
void f() { void B::f(); } //这个算什么? 声明? 调用?

void f() { B b; b.f(); } //由于方法不是静态的,只有实例化对象后调用
jixingzhong 2007-08-01
  • 打赏
  • 举报
回复
class D
{
public:
D(){cout << "D::D()" << endl;}
void f() { B b; b.f(); }
private:

};

64,651

社区成员

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

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