神奇C++问题(6)

HaoGeGe 2001-05-17 08:06:00
请问它的输出结果?

#include <iostream>
using namespace std;

struct C;

struct D {
void operator*(D) { cout << "one\n"; }
} C;

struct E {
void operator*(E) { cout << "two\n"; }
} F;

struct F;

int main(){
C* C;
F* F;
return 0;
}

...全文
196 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
holyfire 2001-05-17
  • 打赏
  • 举报
回复
还是先看看楼下的答案吧。
HaoGeGe 2001-05-17
  • 打赏
  • 举报
回复
one
HaoGeGe 2001-05-17
  • 打赏
  • 举报
回复
E * C 将定义一个指向E类的指针C.
bloodshed Dev-C++挺好用的.还是免费的.
强烈推介.强烈推介.强烈推介.
http://www.bloodshed.net/devcpp.html

holyfire 2001-05-17
  • 打赏
  • 举报
回复
请问一下你的结果你什么
holyfire 2001-05-17
  • 打赏
  • 举报
回复
BC++3.1,呵呵是我弄错了,把两次的结果看成了一次。
HaoGeGe 2001-05-17
  • 打赏
  • 举报
回复
holyfire没有啊,只有一个one
你用的是什么编译器啊?
holyfire 2001-05-17
  • 打赏
  • 举报
回复
但是如何说是指向E呢,E不是对象啊,还有为何他也触发了void operator*(D) { cout << "one\n"; }呢,这个程序结果为
one
one
HaoGeGe 2001-05-17
  • 打赏
  • 举报
回复
E * C 将定义一个指向E的指针C.
请注意上一句的C是一个全局变量.

holyfire 2001-05-17
  • 打赏
  • 举报
回复
int main(){
C* C;
E* C;
return 0;
}

请解释一下E * C 这时编译器是如何解释的呢?
HaoGeGe 2001-05-17
  • 打赏
  • 举报
回复
cber做得很对的地方在于他指出了
C* C;
F* F;
等于
C.operator*(C);
F.operator*(F);
即那两句并不是声明了两个指针.
而是调用了对象C的成员函数.
即可以看到左边的C实际上不是类而是对象.
所以,当类和对象重名时,类名将被隐藏.
所以,如果要申明的话应该用更明确的语句.

struct C* C;





holyfire 2001-05-17
  • 打赏
  • 举报
回复
我还是不明白当类和对象重名时,编译器将如何解释这个字符串。

还请指教。
HaoGeGe 2001-05-17
  • 打赏
  • 举报
回复
cber这不是什么障眼法,这是为了让你搞清楚当类和对象重名时.
编译器将如何解释这个字符串.
再问如何在main函数中设计语句可以打出.
只有one
或者
只有two

wao 2001-05-17
  • 打赏
  • 举报
回复
cber,佩服佩服。
如果工作中有人这样写程序,我会杀了他。呵呵。
cber 2001-05-17
  • 打赏
  • 举报
回复
程序等同于
#include <iostream>
using namespace std;

struct D {
void operator*(D) { cout << "one\n"; }
} C;

struct E {
void operator*(E) { cout << "two\n"; }
} F;

int main()
{
C.operator*(C);
F.operator*(F);

return 0;
}

其他的东西都是一些障眼法;-)
HaoGeGe 2001-05-17
  • 打赏
  • 举报
回复
此题关键在于要搞明白当类和对象重名时.
编译器将如何解释这个字符串.
再问如何在main函数中设计语句可以打出.
只有one
或者
只有two

holyfire 2001-05-17
  • 打赏
  • 举报
回复
敢问此题又妙在何处呢?
ninglng 2001-05-17
  • 打赏
  • 举报
回复
one
two

15,447

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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