類的組合怎么用


/*
      我正在做一個人手建模的程序,用OpenGL做。
       這個程序主要是把人手Hand顯示出來,並實現和數據手套的交互,
   即人帶上數據手套手指隨意運動,程序把手指的運動狀態顯示在屏幕上。
   人手Hand包括手掌Palm、手指Finger,手指包括Index、Middle、
   Ring、Little、Thumb。
   類Index、Middle、Ring、Little、Thumb是Finger的派生類。
   我想問的是這個組合類和繼承怎么寫?下面的寫法對嗎?
*/
class Hand
{
pubic:
    Palm;
    Finger;
    void display();
}
class Index:pubic Finger
{
    display();
}

class Middle:pubic Finger
{
    display();
}

class Ring:pubic Finger
{
    display();
}

class Little:pubic Finger
{
    display();
}

16 个解决方案

#1


你寫的是繼承

#2


引用 1 樓 wltg2001 的回復:
你寫的是繼承

class Hand
{
pubic:
    Palm;
    Finger;
    void display();
}
這不是繼承啊,這么寫組合對不?

#3


這不是繼承啊,這么寫組合對不?
=======
我不知道什么叫組合,我也不記得C++中有類的組合的,我想你的意思是在一個類中定義另外的類作成員變量吧。如果是這個意思,你上面的寫法也是對的。

#4


這個是函數的覆蓋,繼承要求父類和子類的同名函數必須是虛函數

#5


引用 3 樓 wltg2001 的回復:
這不是繼承啊,這么寫組合對不?
=======
我不知道什么叫組合,我也不記得C++中有類的組合的,我想你的意思是在一個類中定義另外的類作成員變量吧。如果是這個意思,你上面的寫法也是對的。

class Head
  {
  public:
   void Look(void) { m_eye.Look(); }
   void Smell(void) { m_nose.Smell(); }
   void Eat(void) { m_mouth.Eat(); }
   void Listen(void) { m_ear.Listen(); }
  private:
   Eye m_eye;
   Nose m_nose;
   Mouth m_mouth;
   Ear m_ear;
  };

Finger和hand的關系就和這里Eye和Head的關系一樣。

#6


說錯了 是函數的隱藏 不是覆蓋

#7


引用 6 樓 sin816 的回復:
說錯了 是函數的隱藏 不是覆蓋

什么叫函數的隱藏?

#8


你所說的類的組合就是指將一些相關的類放在一個類中,作為這個類的類成員變量

#9


引用 8 樓 visualeleven 的回復:
你所說的類的組合就是指將一些相關的類放在一個類中,作為這個類的類成員變量

一個類可以有其他若干個類作為其對象,是這個意思不?

#10


C++還不熟哈哈哈哈哈,愛莫能助愛莫能助

#11


引用 7 樓 lovec001 的回復:
引用 6 樓 sin816 的回復:
說錯了 是函數的隱藏 不是覆蓋

什么叫函數的隱藏?


隱藏就是你調display的時候調的是子類的不是父類的(父類的display存在,只是被子類的屏蔽了)
用域訪問符可以訪問到父類的display

覆蓋就是基類申明display為虛函數 那么會有個虛函數表 即使是父類指針指向派生類對象調的也是
派生類的display(若是隱藏當然就調的是父類的display了) 具體的你可以搜下 虛函數的用法

#12


我也來關注下~~~

#13


引用 9 樓 lovec001 的回復:
引用 8 樓 visualeleven 的回復:
你所說的類的組合就是指將一些相關的類放在一個類中,作為這個類的類成員變量

一個類可以有其他若干個類作為其對象,是這個意思不?

class Hand
{
Palm m_palm;
Finger m_index,m_middle,m_ring,m_little,m_thumb;
}
/*
  這是我導師給我的思路,他的意思是不是m_index,m_middle,m_ring,m_little,m_thumb
  都是類Finger的對象?
  這種情況下,Palm和Finger是不是都作為Hand的類對象?
*/

#14


lz,好好去看c++書,從你的描述來看,你對c++的認識非常膚淺

#15


5樓正解。

#16


這個不是類的組合

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



類的組合與繼承 組合類理解初記 組合 聚合 _類圖 組合與抽象類 什么是Python類的組合? python類的組合應用 關於類的組合和繼承 Python3 類和繼承和組合 C++類的組合及常類型 C++類的組合例子
 
粤ICP备14056181号  © 2014-2021 ITdaan.com