首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于析够函数有关问题,多谢丫

2012-03-09 
关于析够函数问题,谢谢丫 classStudent{public:Student(){cout ConstructingStudent.\n semesHours

关于析够函数问题,谢谢丫

class   Student
{
public:
Student()
{
cout < < "Constructing   Student.\n ";
semesHours=100;
gpa=3.5;
}
~Student()
{
cout < < "Destructing   Sutndet.\n ";
}
protected:
int   semesHours;
float   gpa;

};

class   Teacher
{
public:
Teacher()
{
cout < < "Constructing   Teacher.\n ";
}
~Teacher()
{
cout < < "Destructing   Teacher.\n ";
}
};

class   TutorPair
{
public:
TutorPair()
{
cout < < "Constructing   Tutorpair.\n ";
noMeeting=0;
}
~TutorPair()
{
cout < < "Destructing   Tutorpair.\n ";
}
protected:
Student   student;
Teacher   teacher;
int   noMeeting;
};

int   main()
{
TutorPair   tp;
cout < < "Back   in   main.\n ";
getchar();
}

钱能《C++程序设计》第269页说程序运行结果为:
Constructing   Student.
Constructing   Teacher.
Constructing   Tutorpair.
Back   in   main.
Destructing   Tutorpair
Destructing   Teacher.
Destructing   Sutndet.

可是我在VS2005里面运行结果为:
Constructing   Student.
Constructing   Teacher.
Constructing   Tutorpair.
Back   in   main.

很晕~~~请问是书上写错了儿吗?还有书上说如果类出了作用域就会自动调用析构函数,可是VS2005好象没有调用,真的有点迷糊~~~~

[解决办法]
有,你没看见,把 getchar去了,然后选择运行(不调试),默认那个绿色的是调试运行
[解决办法]
调用了,不过你没看到。
int main()
{
TutorPair tp;
cout < < "Back in main.\n ";
getchar(); // --> 还没执行呢,当然没有析构了
}
你改成这样吧:
int main()
{
{
TutorPair tp;
}
cout < < "Back in main.\n ";
getchar(); // --> 还没执行呢,当然没有析构了
}
会有输出 :
Constructing Student.
Constructing Teacher.
Constructing Tutorpair.
Destructing Tutorpair
Destructing Teacher.
Destructing Sutndet
Back in main.
[解决办法]
你没看见而已,
1、在控制台窗口运行你的程序。
2、 改成这样,更清楚就看见了
int main()
{
{
TutorPair tp;
cout < < "Back in main.\n ";
} //结束它的作用域。
getchar();
}

热点排行