#include
class name
{
char *p1;
public:
getname()
{
char *p=new char[5];------------------//你把这里的char * 去掉,,,,就行了。。。。。。。。原因在下面:
cin>>p1;
cout<<"name is "<}
dispname()
{
cout<<"name is "<}
};
void main()
{
name obj;
obj.getname();
obj.dispname();
}
//不好意思,,,第一次看的时候我把函数dispname();屏蔽了,,所以并没有领会你的意思,,这次应该是对的 。。。。
如果你加上了char * 就表示重新定义了一次p1,,,这样,,,,在类实例化的过程中,,,将有一次重新分配内存,,,并覆盖原来p1的定义,,,,所以就只能在函数A 中可见,,,,而在函数B 中是不可见的 ,,,
你可以通过 cout << & p1 << endl;来查看p1的地址,此时的 p1的地址,,,与报错的p1的地址是不同的,,,
--------------------next---------------------
class name
{
char *p1;
public:
getname()
{
char *p=new char[5];------------------//你把这里的char * 去掉,,,,就行了。。。。。。。。原因在下面:
cin>>p1;
cout<<"name is "<
dispname()
{
cout<<"name is "<
};
void main()
{
name obj;
obj.getname();
obj.dispname();
}
//不好意思,,,第一次看的时候我把函数dispname();屏蔽了,,所以并没有领会你的意思,,这次应该是对的 。。。。
如果你加上了char * 就表示重新定义了一次p1,,,这样,,,,在类实例化的过程中,,,将有一次重新分配内存,,,并覆盖原来p1的定义,,,,所以就只能在函数A 中可见,,,,而在函数B 中是不可见的 ,,,
你可以通过 cout << & p1 << endl;来查看p1的地址,此时的 p1的地址,,,与报错的p1的地址是不同的,,,
--------------------next---------------------