class People
{
char* name;
}
People( char * str )
{
name=str;
}
如上构造函数中一定要为name分配储存空间吗?? name和str不是指向堆中同一块区域吗?
如: char* str="要加薪" ;
c++ plus 怎么说不行
c++
------解决方案--------------------------------------------------------
不是不行,只是不好。会导致多个对象指向同一块内存,存隐患。
------解决方案--------------------------------------------------------
name = "aaa",这个是成立的,不过仅仅是复制了一个地址交给了name而已,而且还是个常量区的地址,若你要是试图通过name修改字符串,就等着程序崩溃吧。
------解决方案--------------------------------------------------------
char *str = "test"
这样定义字符串传入是可以的,但是你在实际项目中 又有几个是定义在字符常量区的;
当你传入一个不是在常量区的字符指针就知道这样是不行的了。不可能你写一个类以后用到的时候都是传入的常量区的参数吧!! 很不安全的