简单的类指针和动态内存分配,该怎么解决
简单的类指针和动态内存分配
调用函数的通常形式“函数名(参数表)”的实质就是“函数代码首地址(参数表)
-----------
那么我们函数指针只需要这样调用
point(a);
而成员函数指针却要这样
XXX-> *point()
为什么前面还要加个别* ()
取他地址里面的内容?
-----------
动态内存分配
--------
point *ptr1=new point; //动态创建对象,没有给出初值,因此调用默认构造函数
delete prt1 //删除对象,自动调用析构函数
ptr1= new point(1,2) //动态创建对象,给出初值,因此调用有形参的构造函数
-------
为什么第一次定义对像指针
point *ptr1
要这样,
第二次
ptr1= new point(1,2)
类名称都不用给出来, *号也不用给了,这是什么原因?
相关文档:郑莉,董渊C++第二版式176页,179页
------解决方案--------------------
1。
前面是不需要加* ,可以直接把函数指针当作函数来使用,在c/c++中,函数名就代表了地址,跟数组一样。
2。
point *ptr1=new point; 定义的一个指针,并且让指针指向一个内存空间
delete prt1 回收了指针所指向的内存空间,指针仍然存在
ptr1= new point(1,2) 再次让指针指向一个新申请内存空间
------解决方案--------------------
point *ptr1 //声明指针
要这样,
第二次
ptr1= new point(1,2) //使用指针
类名称都不用给出来, *号也不用给了,这是什么原因?
point *ptr1=new point; //声明和使用放到一起了
------解决方案--------------------
指针似乎是初学者的梦魇!!
char *s= "hello world ";//变量定义时直接初始化了,指针
char *s2;
s= "hello world ";
对于函数指针的问题,函数调用在汇编级别就是call一个地址
这个地址的取得要是用指针来取当然要*号引用一次
------解决方案--------------------
char *s= "hello world ";//变量定义时直接初始化了,指针
char *s2;
s2= "hello world ";//上楼面写错了
------解决方案--------------------
1. 不用加*也是可以的.因为指针本身已经指向了函数的地址了
2.第一次定义对像指针point *ptr1,这以后,ptr1就是一个指向point类型的指针了,它就可以任意的指向point类型的对象,当然就可以第二次ptr1= new point(1,2)这样了
------解决方案--------------------
建议楼主换C++ primer,不要再浪费生命了。
调用函数的通常形式“函数名(参数表)”的实质就是“函数代码首地址(参数表)
-----------
那么我们函数指针只需要这样调用
point(a);
而成员函数指针却要这样
XXX-> *point()
为什么前面还要加个别* ()
取他地址里面的内容?
-----------
动态内存分配
--------
point *ptr1=new point; //动态创建对象,没有给出初值,因此调用默认构造函数
delete prt1 //删除对象,自动调用析构函数
ptr1= new point(1,2) //动态创建对象,给出初值,因此调用有形参的构造函数
-------
为什么第一次定义对像指针
point *ptr1
要这样,
第二次
ptr1= new point(1,2)
类名称都不用给出来, *号也不用给了,这是什么原因?
相关文档:郑莉,董渊C++第二版式176页,179页
------解决方案--------------------
1。
前面是不需要加* ,可以直接把函数指针当作函数来使用,在c/c++中,函数名就代表了地址,跟数组一样。
2。
point *ptr1=new point; 定义的一个指针,并且让指针指向一个内存空间
delete prt1 回收了指针所指向的内存空间,指针仍然存在
ptr1= new point(1,2) 再次让指针指向一个新申请内存空间
------解决方案--------------------
point *ptr1 //声明指针
要这样,
第二次
ptr1= new point(1,2) //使用指针
类名称都不用给出来, *号也不用给了,这是什么原因?
point *ptr1=new point; //声明和使用放到一起了
------解决方案--------------------
指针似乎是初学者的梦魇!!
char *s= "hello world ";//变量定义时直接初始化了,指针
char *s2;
s= "hello world ";
对于函数指针的问题,函数调用在汇编级别就是call一个地址
这个地址的取得要是用指针来取当然要*号引用一次
------解决方案--------------------
char *s= "hello world ";//变量定义时直接初始化了,指针
char *s2;
s2= "hello world ";//上楼面写错了
------解决方案--------------------
1. 不用加*也是可以的.因为指针本身已经指向了函数的地址了
2.第一次定义对像指针point *ptr1,这以后,ptr1就是一个指向point类型的指针了,它就可以任意的指向point类型的对象,当然就可以第二次ptr1= new point(1,2)这样了
------解决方案--------------------
建议楼主换C++ primer,不要再浪费生命了。