为了账号安全,请及时绑定邮箱和手机立即绑定

向堆中申请空间的问题?

http://img1.sycdn.imooc.com//58c69cba0001af9606550257.jpg

这里定义了一个指针,为什么申请空间的时候就可以是 m_pName = new char[20];

而之前从堆中实例化对象都是int *p = new int[1000];   (等号左边p带*号)

正在回答

6 回答

都定义过了。。不能在定义。。不懂的,,看下指针的注意事项!

0 回复 有任何疑惑可以回复我~

因为后面定义数据成员时已定义了char *m_pName;所以在构造函数中没有必要写成char *m_pName=new char[20];如果有帮助希望采纳

2 回复 有任何疑惑可以回复我~

声明和定义(赋值)的区别;

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存储的地址  的计算机内部空间

打字不易,如果有帮助希望采纳;

0 回复 有任何疑惑可以回复我~
#1

红尘太简单

指针是为了存地址而生的
2018-07-24 回复 有任何疑惑可以回复我~

m_pName等价于char *xxxx::m_pName,xxxx为类名。因此,这是隐含有一个“*”。

0 回复 有任何疑惑可以回复我~

数据类型问题,从“char *”转换为“char”是违法的。

0 回复 有任何疑惑可以回复我~
#1

Tricia0127 提问者

那如果是别的类型,比如Int double 要*么
2017-03-13 回复 有任何疑惑可以回复我~

m_pName也是指针,已在类内定义。

private:

        char *m_pName;

public:

        Student()

                  {

                        m_pName=new  char[20];  //已定义为指针

                  }

 

0 回复 有任何疑惑可以回复我~
#1

Tricia0127 提问者

为啥不加*号呢
2017-03-13 回复 有任何疑惑可以回复我~
#2

木_瓜

因为已经在下面义了,所以直接使用
2018-09-04 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之封装篇(上)
  • 参与学习       103381    人
  • 解答问题       732    个

封装--面向对象的基石,本教程力求帮助小伙伴们即学即会

进入课程

向堆中申请空间的问题?

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号