返回信息流今天从早到晚看了一天的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]
谁能教我怎么样高效地学语言啊……
这是一条镜像帖。来源:北邮人论坛 / cpp / #47827同步于 2010/12/15
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
还有这个程序……
heshanshan
2010/12/15镜像同步5 回复
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
我怎么觉得这个有问题。。。。
应该是213312把,析构函数调用顺序和构造函数顺序是相反的。
没有打出312是因为编译器问题,你用vc的话回答出来的。
可以用命令行运行,会打印。
c++是公认比较难的语言,俗话说冰冻三尺非一日之寒,想学好要脚踏实地,不骄不躁,遇到问题静下心来,慢慢思考。
你要是看书看得懂就可以自己联系,要是看不懂,我可以带你,报酬么,随便给点什么就行,嘿嘿。。。
希望版上大牛看见了别鄙视我啊。。。。。
一般析构函数是遇到return语句才开始执行的,因为return语句在system之后,所以输出看不到,你可以debug一下就可以看到321这三个输出了
你用的VC么?
ctrl+F5试试看
【 在 heshanshan (shanshan2512) 的大作中提到: 】
: 今天从早到晚看了一天的C++里的类和对象的概述,可是发现还是有好多地方不明白,或许自己没有学计算机语言的天赋,学东西好慢,好笨呐……
: 我知道我的问题对你们来说是多么地不值得一问,但还是希望大家帮帮忙,不要嫌弃我,我还是很想学好C++的……[ema1]
: 非常感谢……
: ...................
int main()
{
Whole * pObj = new Whole(1,2,3);
delete pObj;
system("pause");
return 0;
}