首页 > 试题广场 >

以下程序的运行结果是() #include using na

[问答题]
以下程序的运行结果是()
#include<iostream>
 using namespace std;
 class example{
 public:
 example(int n){
 i=n;
 cout<<"Constructing\n";
 }
 ~example(){
 cout<<"Destructing\n";
 }
 int get_i(){
 return i;
 }
 private:
 inti;
 };
 int sqr_it(example o){
 return o.get_i()*o.get_i();
 }
 int main(){
 example x(10);
 cout<<x.get_i()<<endl;
 cout<<sqr_it(x)<<endl;
 return 0;
 }


推荐
本程序的运行结果如下:
Constructing
10
Destructing
100
Destructing
说明:读者一定看出来了,本程序执行时构造函数只被调用了一次,但是,析构函数却被调用了两次。构造函数的调用发生在生成对象x的时候;析构函数的调用,第1次出现在执行函数sqr_it结束时,第2次出现在整个程序运行结束时。在调用函数sqr_it,进行实参和形参结合时,调用了拷贝构造函数(由于没有显式定义拷贝构造函数,这时调用的是系统自动生成的默认拷贝构造函数),对形参对象o进行初始化。当函数sqr_it执行终止,对象。被撤销的时候,第2次调用了析构函数。
发表于 2018-05-05 21:22:58 回复(0)
constructing 10 100 Destructing Destructing 这
发表于 2021-04-15 20:25:17 回复(0)
Constructing 10 100 Destructing Destructing 对象使用完之后调用析构函数,整个程序结束后再调用一次析构函数
编辑于 2019-11-20 23:01:04 回复(0)