你不把代码贴出来怎么回答你
个人理解是系统申请内存后将内存的的首地址赋值给m_pBuffer,m_pBuffer再赋值给p
A.B则A为对象或者结构体;(不用分配内存)
A->B则A为指针,->是成员提取,A->B是提取A中的成员B,A只能是指向类、结构、联合的指针;(要分配内存)
用友元
visual studio 2010
Coordinate是一个类啊,老师c++教程中的案例,现在拿出来用了。
只有指针才能使用->
你需要先实例化一个Coodinate对象,在实例化的时候就会要求你把x和y输入进去了,然后pop和push需要调用的参数都是实例化的对象而不是x和y;
......你这是干嘛?看得我头皮发麻。。。
Coordinate是一个自定义的数据类型呀
因为C++ 默认的拷贝构造函数是浅拷贝,咋们案例是值这种东西,所以可以直接赋值;但是如果涉及到指针,那么用浅拷贝容易造成内存泄漏,因为你的地址是一样的,释放两次会出现内存泄漏,这时候你就要自己实现拷贝构造函数了,而不能使用默认的拷贝构造函数
因为头文件主要用于函数和变量的声明,本身无法编译。
虽然可以在头文件中直接写上代码的实现,但该部分代码只有在程序运行的时候才能够被调用,无法单独编译,所以在定义类的时候,通常会拆成"*.h"和"*.cpp"两个文件来保存
首先,DEV C++是可以多文件编译的。我最开始跟James老师学C++,就是分文件编译运行的^_^
检查是否对应好相应的头文件,.h头文件 .cpp定义还有程序入口的主函数要分工明确。
m_pBuffer = new char[size]; 使用new动态申请了size个char类型大小的空间,如果把char换成类名时,就是申请size个类名大小的空间。但只要是给类实例化对象申请空间,就要调用类的构造函数,而所写的构造函数如果是
Coordinate(int x , int y ); 不是默认构造函数,参数没有默认值,在实例化对象时,就必须给赋予x,y值,否则就会报错,而使用new运算符申请多个内存时,无法为每个对象都赋初值x,y。那样就会报错。因此就需要将构造函数改为有默认值的构造函数 Coordinate(int x = 0, int y = 0); 这样的话编译就可以通过了,但每个对象的x,y值都是0 .不知道我说明白了没?