程序理解问题,问题在注释(原文没注释)
#include<iostream.h>#include<string.h>
class Sring{
char*text; //创建一个指向字符的指针,这个指针还没赋值,也就是指向未明,这样理解对吗?
public:
String(char*str) //在这里,我认为是带有参数的构造函数,参数是一个指针,不知道这样理解对不对
~String();
void printStr(){cout<<text<<endl;}
};
String::String(char*str){ //建立一个带有参数的构造函数,参数是一个指向字符的指针,这样理解对吗?
cout<<"enter 'String::String',str=>"<<str<<endl; //这里不明白了,str只是一个地址,怎么会把一个地址打印出来呢,而结果却是a1d11,不明白
text=new char[strlen(str)+1]; /*[strlen(str)+1]这里我同学说是把str字符长度加1,不知道对不对,整行的意思是把长度加1之后的字符串赋给text,是这样理解的吗
但是在输出结果的时候,发现还是a1d11,都没改变,是怎么回事呢?
*/
strcpy(text,str); //这个实现一个什么功能
}
String::~String(){
cout<<"enter 'String::~String',text=>"<<text<<endl;
delete[]text;
}
void main(){
String str1("a1d11"); //这里不懂,建立一个对象,而这样对象却带有参数,这个应该怎么理解,这个参数按照运行结果似乎是传递给了构造函数,不明白
String str2("s22g22");
str1.printStr();
str2.printStr();
cout<<"ending main!"<<endl;
}
程序运行后的结果如下:
"enter 'String::String',str=>a1d11
"enter 'String::String',str=>s22g22
a1d11
s22g22
ending main!
enter 'String::~String',text=>s22g22
enter 'String::~String',text=>a1d11
基础是差了点,还请多多指导