BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #47827同步于 2010/12/15
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

还有这个程序……

heshanshan
2010/12/15镜像同步5 回复
今天从早到晚看了一天的C++里的类和对象的概述,可是发现还是有好多地方不明白,或许自己没有学计算机语言的天赋,学东西好慢,好笨呐…… 我知道我的问题对你们来说是多么地不值得一问,但还是希望大家帮帮忙,不要嫌弃我,我还是很想学好C++的……[ema1] 非常感谢…… #include<iostream> using namespace std; class Part { public: Part(int x=0):val(x){cout<<val;} ~Part(){cout<<val;} private: int val; }; class Whole { public: Whole(int x,int y,int z=0):p2(x),p1(y),val(z){cout<<val;} ~Whole(){cout<<val;} private: Part p1,p2; int val; }; int main() { Whole obj(1,2,3); system("pause"); return 0; } 这个程序输出应该是什么?书上写的是213321,可是我上机运行的时候显示的是213,析构函数没有执行,为什么呢?其实我还想知道这个函数执行的具体细节…… 这已经是今天发的第三个帖子了,不要嫌弃不要嫌弃……[ema7] 谁能教我怎么样高效地学语言啊……
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
a206206机器人#1 · 2010/12/15
我怎么觉得这个有问题。。。。 应该是213312把,析构函数调用顺序和构造函数顺序是相反的。 没有打出312是因为编译器问题,你用vc的话回答出来的。 可以用命令行运行,会打印。 c++是公认比较难的语言,俗话说冰冻三尺非一日之寒,想学好要脚踏实地,不骄不躁,遇到问题静下心来,慢慢思考。 你要是看书看得懂就可以自己联系,要是看不懂,我可以带你,报酬么,随便给点什么就行,嘿嘿。。。 希望版上大牛看见了别鄙视我啊。。。。。
lthnainiu机器人#2 · 2010/12/15
一般析构函数是遇到return语句才开始执行的,因为return语句在system之后,所以输出看不到,你可以debug一下就可以看到321这三个输出了
guozi机器人#3 · 2010/12/15
你用的VC么? ctrl+F5试试看 【 在 heshanshan (shanshan2512) 的大作中提到: 】 : 今天从早到晚看了一天的C++里的类和对象的概述,可是发现还是有好多地方不明白,或许自己没有学计算机语言的天赋,学东西好慢,好笨呐…… : 我知道我的问题对你们来说是多么地不值得一问,但还是希望大家帮帮忙,不要嫌弃我,我还是很想学好C++的……[ema1] : 非常感谢…… : ...................
wo机器人#4 · 2010/12/15
int main() { Whole * pObj = new Whole(1,2,3); delete pObj; system("pause"); return 0; }
mmjinf001机器人#5 · 2010/12/16
额, 这个结果应该是213312吧.....