gpt4 book ai didi

C++ 在类中使用类

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:15:58 25 4
gpt4 key购买 nike

我有一个基本问题困扰了我一段时间。

当在一个类中使用一个类时,我可以在头文件中定义我想使用的类的头。我已经看到了两种执行此操作的方法,想知道这两种方法之间的区别吗?

ex1

#include "ClassA.h"

class ClassB {

public:
ClassB();
~ClassB();
ClassA* a;
};
#endif

ex2 这是另一种方法。 ClassA header 将在 ClassB 源文件中定义。

class ClassA;

class ClassB {

public:
ClassB();
~ClassB();
ClassA* a;
};
#endif

这两种方法有什么区别?

最佳答案

当您包含类定义时,classA 的完整布局为编译器所知。

第二种语法称为前向声明,现在classA 是编译器的不完整类型

对于不完整类型,
你可以:

  • 将成员声明为指针或对不完整类型的引用。
  • 声明接受/返回不完整类型的函数或方法。
  • 定义接受/返回指向不完整类型的指针/引用的函数或方法(但不使用其成员)

但是你不能:

  • 将其用作基类。
  • 用它来声明一个成员。
  • 使用此类型定义函数或方法。
  • 使用它的方法或字段,实际上是试图解引用一个类型不完整的变量。

因此向前声明类可能会工作得更快,因为编译器不必将整个代码包含在该头文件中,但它限制了您如何使用该类型,因为它变成了不完整类型。

关于C++ 在类中使用类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7793860/

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