C++中的HORDSA关系是什么?

C++中的HORDSA关系是什么?,c++,C++,需要了解此代码的作用是什么 class FAX { : }; class MODEM { FAX * connect; long bps; char type; public: MODEM(long sp, char c, FAX *c) : connect(c) { bps =sp; type =c; } }; 似乎HOL

需要了解此代码的作用是什么

class FAX {
            :
 };

class MODEM {

    FAX * connect;
    long bps;
    char type;
   public:
      MODEM(long sp, char c, FAX *c) : connect(c)
        {
             bps =sp;
             type =c; 
         }
      };

似乎HOLDS_A是一种有点令人困惑的方式,它指的是更常见的聚合关系,这里的一个对象调制解调器依赖于另一个对象(这里是传真),但不拥有它:调制解调器对传真没有独占访问权,也不管理其生存期。在C++中,通过在代码中显示指针或引用,可以实现这种关系。其他的东西负责创建传真并向调制解调器提供指向它的指针


这可以与更强的组合关系相比较,其中调制解调器拥有传真。在这种情况下,传真被视为调制解调器的一部分,而不是许多其他对象可能使用的单独实体。这种关系有时可以通过使传真本身成为调制解调器类的成员,从而真正地成为调制解调器的一部分而在C++中实现;有时仍然需要一个指针,但这应该是一个智能指针,如std::unique\u ptr,用于管理所有权关系。

HOLDS-a关系是一种关系类型,其中一个对象持有一个指向不同类型对象的指针或引用,而这两个指针或引用不通过继承关联

在这种情况下,即使传真和调制解调器没有通过IS-a关系的继承机制链接,调制解调器也有一个传真类型的成员,创建了类调制解调器对类传真的依赖关系

就代码的作用而言:

        MODEM(long sp, char c, FAX *c) : connect(c)
        {
             bps =sp;
             type =c; 
         }
This is a constructor with parameters for class MODEM.
      -you cannot have mode than one member with the same name so I assume this is a typo
      -the constructor initializes bsp and type memebers expicitly
      -and connect member using a initialization list; almost the same as connect = c;
希望这有帮助

编辑:

关系的一个例子

class A
{
// class members;
}


class B
{
  A *aMember;
//other class members
}

MODEMlong sp,char c,FAX*c您的编译器是否接受两个参数的相同名称?我从未听说过holds-a关系,但听起来可能与has-a关系相同,这意味着组合。代码证明了这一点。是的,这是一段用来理解关系的代码片段。我知道,保持关系的是,通过指针或引用间接包含另一个对象的类。@Raul Andres是的,两个参数的名称相同,而且还被告知connectc是独立构造的成员。这是什么意思?同意,但传真*c什么时候被销毁?虽然是由一个独立的member@Uma:那是其他事情的责任。它必须至少与此调制解调器对象以及使用它的任何其他对象一样长。共享所有权,C++通过SydDypTR实现,如果没有明确的所有者,它可能适合于管理聚集对象。现在我得到了在C++中实现的HORDSYA关系的图片,谢谢。是的,我之前猜到它是一个打印错误。我对此没有信心。除非我得到了一个关系的概念,一个合适的例子。有了这段代码,我不明白关系是如何工作或实现的。这就是为什么我在这里问这个问题。这不是关系吗?其中,B拥有A.OK对象的所有权。但我了解到,保持关系的是一个类,它通过指针或引用间接包含另一个对象。因此B不拥有A的所有权。就像在B中,它包含一个指向A的指针或引用。。?对不起;我更正了我的答案。