最新回答 / 等候稻香
解决方案:头文件和源文件都在同一个项目中(即Coordinate.h和Coordinate.cpp一起放在项目中),头文件中定义方法,在源文件中实现,并且方法前加上Coordinate::,关键是Coordinate.cpp中加上include “stdafx.h””stdafx.h“的原理:编译器通过一个头文件stdafx.h来使用预编译头文件。stdafx.h这个头文件名是可以在project的编译设置里指定的。编译器认为,所有在指令#include "stdafx.h"前的代码都是预编译的,它跳过#...
2015-09-08
已采纳回答 / onemoo
这两种写法对于有默认构造函数的类对象来说没有区别,这两种写法都是调用其默认构造函数。所以如果Coordinate有默认构造函数,这样的写法就没区别。没有默认构造函数的话,这两种写法都编译不过。另外,这两种写法对于built-in类型是有区别的:不带括号时,构造的对象是default initialized,对于built-in类型,这种情况下初值是不确定的。带空括号时,对象是value initialized,对于built-in类型来说,初值一般是0。
2015-09-05
这节课没必要讲的这么复杂吧,我写得代码参考如下:
coordinate arr[3];
arr[0].x=0;
arr[0].y=0;
………………
coordinate *p=new coordinate[3];
p->x=0;
p->y=0;
(p+1)->x=1;
……
for(int i=0;i<3;i++)
cout<<arr[i].x<<endl;
for(int j=0;j<3;j++)
cout<<p[j].x<<endl;
Xcode下运行正确
coordinate arr[3];
arr[0].x=0;
arr[0].y=0;
………………
coordinate *p=new coordinate[3];
p->x=0;
p->y=0;
(p+1)->x=1;
……
for(int i=0;i<3;i++)
cout<<arr[i].x<<endl;
for(int j=0;j<3;j++)
cout<<p[j].x<<endl;
Xcode下运行正确
2015-09-03
有个容易混淆的地方,封装篇上部有讲 people *p = new people();
这个是使用的圆括号,而在对象数组中使用的时[]
这个是使用的圆括号,而在对象数组中使用的时[]
2015-09-03
已采纳回答 / AAnonymous
p1 是一个对象, 分配在栈上p2是一个指针,指向p1这个对象,即p2指向p1在栈上的地址(并没有创建新的对象)Coordinate *p2 = new Coordinate(); 才创建了新的对象,在堆上
2015-08-31