构造函数
1.语句myclass a[3],*p[2]调用了几次构造函数?是三次怎么来的?2.
#include <iostream.h>
#include <string.h>
class student
{
public:
student(char* pname="no name",int ssid=0)
{
id=ssid;
strcpy(name,pname);
cout<<"constructing new student"<<pname<<endl;
}
student(student& s)
{
cout<<"constructing copy of"<<s.name<<endl;
strcpy*(name,"copy of");
strcat(name,"copy of");
id=s.id;
}
~student()
{
cout<<"destructing"<<name<<endl;
}
protected:
char name[40];
int id;
};
void fn(student s)
{
cout<<"in function fn()\n";
}
void main()
{
student randy("Randy",1234);
cout<<"calling fn()\n";
fn(randy);
cout<<"returned from fn()\n";
}
问题:
<1> randy对象的创建不也是Randy传给了pname为什么不是调用拷贝构造函数?到底什么时候调用拷贝构造函数,什么时候调用构造函数?
<2> 为什么用char* pname="no name"这个表示方法,如果我直接用char* pname是不是 有错?char pname呢,用char pname是不是因为传递的是一个复制了的局部对象,起不到真正复制的效果?谁能给我解答一下,谢谢了.
[ 本帖最后由 jjg 于 2009-8-19 16:28 编辑 ]