Mil*_*avi 3 c++ java class-design class
我是Java程序员,我是C++编程的新手.在java中,我们必须在单独的文件中编写所有类,并且所有方法的定义都在类中.但是现在在C++中,我想知道为什么C++允许程序员在类之外编写方法的定义.有没有办法编写像Java这样的C++程序?
如果您愿意,可以在头文件中编写类的代码.这使得C++中的头文件类似于java中的java文件.
#ifndef _MYCLASS_H_
#define _MYCLASS_H_
#include "OtherClass.h"
class MyClass {
public:
MyClass() { _otherClass=0; }
void set(OtherClass* oc) { _otherClass = oc; );
OtherClass* get(void) { return _otherClass; };
private:
OtherClass* _otherClass;
};
#endif
Run Code Online (Sandbox Code Playgroud)
但是你也可以用C++将头文件和代码分成两个文件.这允许您分离方法的定义和声明,并减少编译时标头依赖性.
请注意,在上面的示例中,任何包含MyClass.h的类都将自动包含OtherClass.h,无论是否需要它,对OtherClass.h的更改将需要重新编译MyClass.h的所有客户端.
但是在下面的分离示例中,有一个OtherClass.h的前向声明(这是可能的,因为它只用作指针),而实际的OtherClass.h只包含在cpp文件中.现在对OtherClass.h的更改只会强制重新编译MyClass.cpp,而不是MyClass.h的客户端(除非它们也包含OtherClass.h),
这也意味着你可以对MyClass :: get()进行更改,你只需要重新编译MyClass.cpp,而不是MyClass的所有客户端.
#ifndef _MYCLASS_H_
#define _MYCLASS_H_
class OtherClass;
class MyClass {
public:
MyClass();
void set(OtherClass* oc);
OtherClass* get(void);
private:
OtherClass* _otherClass;
};
#endif
Run Code Online (Sandbox Code Playgroud)
#include "MyClass.h"
#include "OtherClass.h"
MyClass::MyClass() : _otherClass(0) {}
MyClass::set(OtherClass* oc) { _otherClass=oc; }
OtherClass* MyClass::get() { return _otherClass; };
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2085 次 |
最近记录: |