У меня есть очень простой класс с именем человека, который приведен ниже, у меня проблема только с двумя функциями, то есть функцией setstring() и функцией setname(), я вызываю функцию setstring() из функции setname. Единственная проблема, когда в основной функции я пишу
Object.setname(“Zia”);
Результат в порядке, как показано на экране вывода. Теперь, когда я пишу
Object.setname("Zia ur Rahman");
Ничего не отображается, так как вы видите экран вывода.
Я знаю, что проблема заключается в том, что я передаю указатель имени в функцию setstring(), но я не понимаю, пожалуйста, объясните подробно, что здесь происходит.
#include<iostream.h>
class person
{
char* name;
public:
person();
void setname(const char*);
void setstring(const char*, char*);
void print()const;
};
person::person()
{
name=new char[3];
strcpy(name,"NILL");
name[3]='\0';
}
void person::setstring(const char* s, char*p)
{
if(s!=NULL)
{
delete[] p;
p=new char[strlen(s)];
strcpy(p,s);
p[strlen(s)]='\0';
}
}
void person::setname(const char* n)
{
setstring(n, name);//passing data member name
}
void person::print()const
{
cout<<"Name: "<<name<<endl;
}
main()
{
person object;
object.setname("Zia ur Rahman");
object.print();
system("pause");
}
замещающий текст http://img264.imageshack.us/img264/8867/inheritanceimage004.jpg< /а>
замещающий текст http://img263.imageshack.us/img263/3770/inheritanceimage003.jpg< /а>