单项选择题

关于关键字class和typename,下列表述中正确的是()。

A.程序中的typename都可以替换为class
B.程序中的class都可以替换为typename
C.在模板形参表中只能用typename来声明参数的类型
D.在模板形参表中只能用class或typename来声明参数的类型

热门 试题

问答题
请使用VC6或使用[答题] 菜单打开考生文件夹proj3下的工程文件proj3。本题创建一个小型字符串类,字符串长度不超过100。程序文件包括proj3. h、proj3. cpp、writeToFile. obj。补充完成重载赋值运算符函数,完成深复制功能。 屏幕上输出的正确结果应该是: Hello! Happy new year! 要求: 补充编制的内容写在“ **********333**********”与“ **********666**********”两行之间。不得修改程序的其他部分。 注意: 程序最后调用writeToFile函数,使用另一组不同的测试数据,将不同的运行结果输出到文件out. dat中。输出函数writeToFile已经编译为obj文件。 proj3. h #inelude < iostream > #include < iomanip > using namespaee std; class MiniString public : friend ostream &operator << ( ostream &output, const MiniString &s ) 重载流插入运算符 output << s. sPtr; return output; friend istream &operator >> ( istrearn &input, MiniString &s ) 重载流提取运算符 char temp [100]; 用于输入的临时数组 temp[0] = ’ 0’; 初始为空字符串 input >> setw( 100 ) >> temp; int inLen = strlen(temp) ; 输入字符串长度 if( inLen != 0) s. length = inLen; 赋长度 if( s. sPtr! = 0) delete []s. sPtr; 避免内存泄漏 s. sPtr = new char [s. length + 1] ; strepy( s. sPtr, temp ) ; 如果s不是空指针,则复制内容 else s. sPtr [0] = ’ 0’; 如果s是空指针,则为空字符串 return input ; void modString( const char * string2 ) 更改字符串内容 if ( string2 ! = 0 ) 如果string2不是空指针,则复制内容 if ( strlen(string2) ! = length) length = strlen(string2) ; delete [] sPtr; sPtr = new char [length + 1]; 分配内存 strepy( sPtr, string2 ); else sPtr [0] = ’ 0’; 如果string2是空指针,则为空字符串 MiniString& operator = ( const MiniString &otherString) ; MiniString( constchar *s = ):length(( s ! = 0 ) strlen( s ) : 0 ) 构造函数 sPtr = 0 ; if ( length ! = O) setString( s ); ~MiniString() 析构函数 delete [] sPtr; private : int length; 字符串长度 char * sPtr; 指向字符串起始位置 void setString( const char * string2 ) 辅助函数 sPtr = new char [strlen(string2) + 1]; 分配内存 if ( string2 ! = 0 ) strcpy( sPtr, string2 ) ; 如果string2不是空指针,则复制内容 else sPtr [0] = ’ 0’; 如果string2是空指针,则为空字符串 ; proj3. cpp #include < iostream > #include < iomanip > using namespace std; #include proj3. h MiniString& MiniString: :operator = (const MiniString &otherString) 重载赋值运算符函数。提示:可以调用辅助函数setString ************* 333 ********** ************* 666 ********** int main() MiniString str1 ( Hello ! ), str2 ; void writeToFile (const char * ) ; str2=str1; 使用重载的赋值运算符 str2. modString( Happy new year! ) ; cout << str1 <<’ n’; cout << str2 <<’ n’; writeToFile ( ) ; return 0 ;