#include <iostream.h>
class CSample{
char ch1,ch2;
public:
friend void set (CSample &s,char c1,char c2);
CSample(char a,char b){
ch1=a;ch2=b;
cout<<"CSample Constructor"<<endl;}
CSample(const CSample &rhs){
ch1=rhs.ch1;
ch2=rhs.ch2;
cout<<"CSample Copy-constructor"<<endl;};
CSample&operator=(const CSample&rhs){
ch1=rhs.ch1;
ch2=rhs.ch2;
cout<<"CSample Operator="<<endl;
return *this;}
~CSample(){
cout<<"ch1="<<ch1<<",ch2"<<ch2<<endl;}
};
void set(CSample &s,char c1,char c2)
{s.ch1=c1;
s.ch2=c2;}
CSample fun(CSample obj)
{set (obj,'7','9');
return obj;}
void main()
{CSample obj1('7','8');
CSample obj2=obj1;
obj2=fun(obj1);}
这段代码我解读是 先创建了obj1,调用一次构造函数。
然后obj2=obj1调用一次拷贝构造函数。
fun(obj1)再调用一次拷贝构造函数。
CSample fun(CSample obj)
{set (obj,'7','9');
return obj;}返回是对象,再调用一次拷贝构造函数。
这样运行到
CSample Constructor
CSample Constructor
CSample Constructor
接下来怎么解答?
class CSample{
char ch1,ch2;
public:
friend void set (CSample &s,char c1,char c2);
CSample(char a,char b){
ch1=a;ch2=b;
cout<<"CSample Constructor"<<endl;}
CSample(const CSample &rhs){
ch1=rhs.ch1;
ch2=rhs.ch2;
cout<<"CSample Copy-constructor"<<endl;};
CSample&operator=(const CSample&rhs){
ch1=rhs.ch1;
ch2=rhs.ch2;
cout<<"CSample Operator="<<endl;
return *this;}
~CSample(){
cout<<"ch1="<<ch1<<",ch2"<<ch2<<endl;}
};
void set(CSample &s,char c1,char c2)
{s.ch1=c1;
s.ch2=c2;}
CSample fun(CSample obj)
{set (obj,'7','9');
return obj;}
void main()
{CSample obj1('7','8');
CSample obj2=obj1;
obj2=fun(obj1);}
这段代码我解读是 先创建了obj1,调用一次构造函数。
然后obj2=obj1调用一次拷贝构造函数。
fun(obj1)再调用一次拷贝构造函数。
CSample fun(CSample obj)
{set (obj,'7','9');
return obj;}返回是对象,再调用一次拷贝构造函数。
这样运行到
CSample Constructor
CSample Constructor
CSample Constructor
接下来怎么解答?