返回首页

代码:


#include <iostream>

using namespace std;

 

class String

{

 

	char name[256];

public:

 

	String(char* str)

	{

		cout<<"Constructor" << endl;

		strcpy(name,str);

	}

 

	String(String &s)

	{

		cout<< "Copy Constructor"<< endl;

		strcpy(name,s.name);

	}

 

	String()

	{

		cout<<"Default Constructor"<<endl;

	}

 

	 String(){}

 

	String& operator=(const String&s)

	{

		strcpy(name,s.name);

		cout<<"Assign Operator"<<endl;

		return *this;

	}

 



	void display()

	{

		cout << "The String is:" << name << endl;

	}

};

 



int main()

{

	String mystr1 = "a";//Why does it only print "Constructor"?

	String mystr2;

	mystr2 = "aa";

	String mystr3("aaa");//Here just invoke String::String(char *str).

	return 0;

}


为什么不调用字符串的String :: String的定义"mystr1"?编译器如何处理?与mystr1定义

回答

评论会员:。CPallini 时间:2012/02/07
叶波写道:: |理查德MacCutchan:你的代码只需要默认的构造函数为你传递的char * intialisation参数。你需要传递的对象要调用拷贝构造函数和=运算。试试这个:
{C5的}:约亨・阿恩特
评论会员:游客 时间:2012/02/07
mystr1不带参数的构造。所以默认的构造函数字符串()被调用。此外,还有没有复制操作定义为char*,您可以添加:{5233}编辑:CPallini是正确的,我的答案是错的。ASHISH特亚吉40|构造隐式转换器,{C7-}{C8的}imgsrc=也将有助于