重要的让人头痛的两个问题(急需求助!)

来源:百度知道 编辑:UC知道 时间:2024/06/06 04:34:20
#include<iostream.h>
#include<string.h>
class string
{
char name[256];
public:
string(char *str)
{
strcpy(name,str);
}
string(){}
string operator+(const string &);
void display()
{
cout<<"the string is :"<<name<<endl;
}
};

#include"aa.h"
static char *str;
string string::operator +(const string&a)
{
strcpy(str,name);
strcat(str,a.name);
return String(str);
}

#include"aa.h"
void main()
{
str=new char[256];
string demol("visual c++");
string demo2("6.0");
demol.display();
demo2.display();
string demo3=demol+demo2;
demo3.display();
string demo4=demo3+"programming.";
demo4.display();
delete str;
}

这题中有两个问题:
1-怎样才能在不同文件中共用同一个全局变量(也就是本题中的 char *str);
(我知道它在本题中

问题1:把static char *str;中的static关键字去掉(static用于全局函数或变量表示此函数或变量只能在所在文件中使用,其他文件无法访问),然后在其他CPP文件中使用此全局变量前加上extern char *str;即可。自己再去查查static和extern关键字的用法,可以加深理解。

问题2:
string demo4=demo3+"programming.";这句相当于执行:
const string tmp("programming.");
string demo4=demo3.operator+(tmp);
常量字符串"programming."在作为实参传递时会根据形参的类型自动构造成const的string类型的临时对象tmp,所以需要加const修饰才能编译过