阅读该程序,给出程序的输出结果。 #include <iostream.h> class C { friend void print(C c); public: C(int i) : x(i) { } C() : x(0) { cout<<"Default constructor called."<<x<<endl; } C(const C& c) { x = c.x; cout << "Copy constructor called." << x << endl; } ~C() { cout<<"Destructor called."<<x<<endl; } private: int x; }; void print(C c) { cout << c.x << endl; } void main() { C p[4]; int n=1; for(int i=0;i<4;i++) p[i]=C(n++); for(i=0;i<4;i++) print(p[i]); }-笔试面试资料
这是qklbishe.com第4969 篇笔试面试资料
提供答案分析,通过本文《阅读该程序,给出程序的输出结果。 #include <iostream.h> class C { friend void print(C c); public: C(int i) : x(i) { } C() : x(0) { cout<<"Default constructor called."<<x<<endl; } C(const C& c) { x = c.x; cout << "Copy constructor called." << x << endl; } ~C() { cout<<"Destructor called."<<x<<endl; } private: int x; }; void print(C c) { cout << c.x << endl; } void main() { C p[4]; int n=1; for(int i=0;i<4;i++) p[i]=C(n++); for(i=0;i<4;i++) print(p[i]); }-笔试面试资料》可以理解其中的代码原理,这是一篇很好的求职学习资料
本站提供程序员计算机面试经验学习,笔试经验,包括字节跳动/头条,腾讯,阿里,美团,滴滴出行,网易,百度,京东,小米,华为,微软等互联网大厂真题学习背诵。
答案:
阅读该程序,给出程序的输出结果。
#include <iostream.h>
class C
{
friend void print(C c);
public:
C(int i) : x(i)
{
}
C() : x(0)
{
cout<<"Default constructor called."<<x<<endl;
}
C(const C& c)
{
x = c.x;
cout << "Copy constructor called." << x << endl;
}
~C()
{
cout<<"Destructor called."<<x<<endl;
}
private:
int x;
};
void print(C c)
{
cout << c.x << endl;
}
void main()
{
C p[4];
int n=1;
for(int i=0;i<4;i++)
p[i]=C(n++);
for(i=0;i<4;i++)
print(p[i]);
}
//调用默认构造函数,输出:
Default constructor called.0
Default constructor called.0
Default constructor called.0
Default constructor called.0
for(int i=0;i<4;i++)
p[i]=C(n++);
//p[0]=C(1),p[1]=C(2)…赋值运算符重载?右边创建一个临时C对象,语句结束后调用析构函数;输出:
Destructor called.1
Destructor called.2
Destructor called.3
Destructor called.4
for(i=0;i<4;i++)
print(p[i]);
//注意:print()函数形参为C类型对象,实参为p[i],这会调用复制构造函数,print()产生一个局部C类对象,之后输出x值,print()运行结束,局部对象释放,调用析构函数,输出:
Copy constructor called.1
1
Destructor called.1
Copy constructor called.2
2
Destructor called.2
Copy constructor called.3
3
Destructor called.3
Copy constructor called.4
4
Destructor called.4
最后main()函数运行接收,p[i]数组释放掉,数组元素按照从后向前释放,调用析构函数,输出:
Destructor called.4
Destructor called.3
Destructor called.2
文章部分来自互联网,侵权联系删除
www.qklbishe.com
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台 » 阅读该程序,给出程序的输出结果。 #include <iostream.h> class C { friend void print(C c); public: C(int i) : x(i) { } C() : x(0) { cout<<"Default constructor called."<<x<<endl; } C(const C& c) { x = c.x; cout << "Copy constructor called." << x << endl; } ~C() { cout<<"Destructor called."<<x<<endl; } private: int x; }; void print(C c) { cout << c.x << endl; } void main() { C p[4]; int n=1; for(int i=0;i<4;i++) p[i]=C(n++); for(i=0;i<4;i++) print(p[i]); }-笔试面试资料