课程
/后端开发
/C++
/C++远征之封装篇(上)
这里定义了一个指针,为什么申请空间的时候就可以是 m_pName = new char[20];
而之前从堆中实例化对象都是int *p = new int[1000]; (等号左边p带*号)
2017-03-13
源自:C++远征之封装篇(上) 6-10
正在回答
都定义过了。。不能在定义。。不懂的,,看下指针的注意事项!
因为后面定义数据成员时已定义了char *m_pName;所以在构造函数中没有必要写成char *m_pName=new char[20];如果有帮助希望采纳
声明和定义(赋值)的区别;
int *p = new int[100]; //声明指针变量p ,并且申请空间 100*int(赋值) int *p ; //声明指针变量p p = new int [100]; //申请空间 100*int,首地址存入 指针变量p里面(赋值) ... ...赋值。 cout << p << endl; //输出p存储的地址 的内容,即int [100]内容 cout << *p << endl; //输出p存储的地址 的计算机内部空间
打字不易,如果有帮助希望采纳;
红尘太简单
m_pName等价于char *xxxx::m_pName,xxxx为类名。因此,这是隐含有一个“*”。
数据类型问题,从“char *”转换为“char”是违法的。
Tricia0127 提问者
m_pName也是指针,已在类内定义。
private:
char *m_pName;
public:
Student()
{
m_pName=new char[20]; //已定义为指针
}
木_瓜
举报
封装--面向对象的基石,本教程力求帮助小伙伴们即学即会
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号