已采纳回答 / onemoo
不用包含.cpp文件,实际上根本不应包含任何含有实现的文件。Coordinator.h 中含有Coordinator类的定义(不是类实现)。C++中的符号只要提前声明就可使用。对类来说,有了类定义就可以使用这个类。对函数来说,有了函数原型的声明,就可以进行函数调用。把函数和类的声明单独写在 .h 文件中就是为了让其他想要使用它们的源文件只要include这些“头文件”就可以使用了。
2015-09-11
已采纳回答 / onemoo
这个pCoor只是指针本身是const,并不是所指的对象是const的。所以只是这个pCoor本身不能更改(不能指向其他Coordinate对象),而pCoor所指的coor1是可以被更改的。所以调用普通成员函数没有问题。你所说的那种指针应该这样声明:<...code...>
2015-09-11
最新回答 / 等候稻香
解决方案:头文件和源文件都在同一个项目中(即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
已采纳回答 / AAnonymous
p1 是一个对象, 分配在栈上p2是一个指针,指向p1这个对象,即p2指向p1在栈上的地址(并没有创建新的对象)Coordinate *p2 = new Coordinate(); 才创建了新的对象,在堆上
2015-08-31
最赞回答 / 走进科学
1.如果有多个成员数据,构造函数可以一次给多个成员数据设定初始值,set函数一般都是一个成员数据对应一个set函数.一次只能设定一个.2.构造函数只能设定初始值,如果设定了初始值之后,又想要再更改这个值.那么就只能用set了.
2015-08-25