对于复制构造函数和赋值操作的关系,正确的是()。
A.复制构造函数和赋值操作是完全一样的操作
B.进行赋值操作时,会调用类的构造函数
C.当调用复制构造函数时,类的对象正在被建立并被初始化
D.复制构造函数和赋值操作不能在同一个类中被同时定义
A.复制构造函数和赋值操作是完全一样的操作
B.进行赋值操作时,会调用类的构造函数
C.当调用复制构造函数时,类的对象正在被建立并被初始化
D.复制构造函数和赋值操作不能在同一个类中被同时定义
A.拷贝构造函数和赋值操作是完全一样的操作
B.进行赋值操作时,会调用类的构造函数
C.当调用拷贝构造函数时,类的对象正在被建立并被初始化
D.拷贝构造函数和赋值操作不能在同一个类中被同时定义
A.有参构造函数
B.无参构造函数
C.复制构造函数
D.赋值构造函数
A、对于形参,虽然定义了它,只有当函数被调用时,形参才在内存中开辟空间
B、调用结束后,形参自动从内存中被释放掉
C、在函数定义中,可以不给出形参类型,调用的时候再定义。
D、实参与形参的关系是赋值与被赋值的关系
下列关于派生类的构造函数的说法中,哪个是错误的 ______。
A.派生类不继承基类的构造函数和赋值运算
B.派生类的构造函数可以调用基类的构造函数
C.派生类的构造函数先于基类的构造函数执行
D.在建立派生类的实例对象时,必须调用基类的构造函数来初始化派生类对象中的基类成员
(10 )类 Sample 的构造函数将形参 data 赋值给数据成员 data 。请将类定义补充完整。
class Sample{
public:
Sample(int data=0);
Private:
Int data;
};
Sample::Sample(int data){
【 10 】
}
(1)补充类Employee的构造函数,请使用字符串函数将数据成员name,address,city,province和zipcode分别初始化为参数*nm,*addr,*city,*prov和*zip的值。请在注释“//**1**”之后添加适当的语句;
(2)完成类Employee的成员函数ChangeName(char * newName)的定义,将newName指向的内容赋值给数据成员name,请在注释“//**2**”之后添加适当的语句;
(3)完成类Employee的成员函数Display()的定义,先使用指针buffer动态申请一个char型的200单位大小的空间,然后使用字符串函数将数据成员name和address依次复制其中,最后返回该指针buffer,将请在注释“//**3**”之后添加适当的语句。输出结果如下:
王东建国路大街105号
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
源程序文件test18_3.cpp清单如下:
include <iostream.h>
include <string.h>
class Employee{
protected:
char name[20];
char address[100];
char city[20];
char province[20];
char zipcode[10];
public:
Employee(char *nm, char *addr,char *city, char *prov, char *zip);
void ChangeName(char *newName);
char *Display();
};
Employee::Employee(char *nm, char *adr, char *cit, char *prov, char *zip)
{
//**1**
strcpy(city, cit);
strcpy(province,prov);
strcpy(zipcode,zip);
}
void Employee::ChangeName(char * newName)
{
//**2**
}
char *Employee::Display()
{
//**3**
strcat(buffer, address);
return buffer;
}
void main()
{
Employee emp("李华","建国路大街105号","石家庄","河北","103400");
emp. ChangeName ("王东");
cout<<emp.Display()<<end1;
}
形如A::A(A &)的构造函数称为()。
A.拷贝函数
B.复制函数
C.初始化函数
D.拷贝初始化构造函数
阅读下列程序说明和C++程序,把应填入其中(n)处的字句,写对应栏内。
【说明】
下面的程序实现了类String的构造函数、析构函数和赋值函数。
已知类String的原型为:
class String
{
public:
String(coust char * str = NULL); //普通构造函数
String(const String &other); //拷贝构造函数
~String(void); //析构函数
String & perate =(const String &other); //赋值函数
private:
char * m_data; // 用于保存字符串
};
//String 的析构函数
String:: ~String (void)
{
(1);
}
//String 的普通构造函数
String: :String(const char * str)
{
if (2)
{
m_data = new char[1];
*m_data = '\0';
}
else
{
int length = strlen(str);
m_data = new ehar[ length + 1 ];
strepy(m_data, str);
}
}
//拷贝的构造函数
String:: String(const String &other)
{ int length = strlen(other. m_data);
m_data = new char[ length + 1 ];
strepy(m_data, other, m_data); //赋值函数
String & String::operate = (eonst String &other) //
{
if (3)
return * this;
delete [] m_clara; //释放原有的内存资源
int length = strlen(other, m_data);
m_data = new chart length + 1 ];
(4);
return (5);
}