我想知道如何在这个连接过程中调用复制构造函数。我应该能够调用复制构造函数并将其赋值给s3。这甚至是可能的吗?如果是,请帮助我在这里。谢谢
#include<iostream.h>
#include<conio.h>
#include<string.h>
class String
{
char x[40];
public:
String() { } // Default Constructor
String( char s[] )
{
strcpy(x,s);
}
String( String & s )
{
strcpy(x,s.x );
}
String operator + ( String s2 )
{
String res;
strcpy( res.x,x );
strcat( res.x,s2.x);
return(res);
}
friend ostream & operator << ( ostream & x,String & s );
};
ostream & operator << ( ostream & x,String & s )
{
x<<s.x;
return(x);
}
int main()
{
clrscr();
String s1="Vtu";
String s2="Belgaum";
String s3 = s1+ s2; // Should invoke copy constructor to concatenate and assign
cout<<"\n\ns1 = "<<s1;
cout<<"\n\ns2 = "<<s2;
cout<<"\n\ns1 + s2 = "<<s3;
getch();
return 0;
}
2条答案
按热度按时间ckocjqey1#
首先定义默认的构造函数
至于复制构造函数,则应声明为
在这种情况下,可以从临时对象创建新对象。
我也会定义这个构造函数String(char s[]){ strcpy(x,s);}
以下方式
此运算符还应具有带有限定符const的第二个参数
dtcbnfnu2#