gpt4 book ai didi

java - 像Java一样在类内部定义C++方法

转载 作者:太空狗 更新时间:2023-10-29 23:52:35 24 4
gpt4 key购买 nike

我是 Java 程序员,我是 C++ 编程的新手。在 Java 中,我们必须在单独的文件中编写所有类,并且所有方法的定义都在类中。但是现在在 C++ 中,我想知道为什么 C++ 允许程序员在类之外编写方法的定义。有没有办法像Java一样编写C++程序?

最佳答案

如果愿意,您可以在头文件中为您的类编写代码。这使得C++中的头文件类似于java中的java文件。

我的类.h

#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

但您也可以在 C++ 中将 header 和代码拆分为两个文件。这允许您将方法的定义和声明分开,并减少编译时头文件的依赖性。

请注意,在上面的示例中,任何包含 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 的所有客户端

我的类.h

#ifndef _MYCLASS_H_
#define _MYCLASS_H_

class OtherClass;

class MyClass {
public:
MyClass();

void set(OtherClass* oc);
OtherClass* get(void);

private:
OtherClass* _otherClass;
};
#endif

我的类.cpp

#include "MyClass.h"
#include "OtherClass.h"

MyClass::MyClass() : _otherClass(0) {}

MyClass::set(OtherClass* oc) { _otherClass=oc; }

OtherClass* MyClass::get() { return _otherClass; };

关于java - 像Java一样在类内部定义C++方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15048584/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com