我有一個類層次結構所造成的具有所有類延伸的裝飾圖案兩顆鑽石(他們已經幾乎擴展): namespace _sandbox {
class A {
public:
virtual ~A() {}
virtual void foo()=0;
};
class ADecorator : public virtual A {
private:
我正在試驗繼承,並且遇到了特定的行爲。首先,看代碼: class animal
{
public:
int ID;
animal(int id) : ID(id)
{
cout<<"I am an animal and I am not a terrorist. Here is my ID: "
<<ID<<endl;
}
};
Doxygen有一個非常整潔的功能,它將從代碼生成繼承圖。然而,使用從一個共同的基類多重繼承的時候,該圖顯示了兩個獨立的基類(即使我使用的是標誌着由周圍的基類中的虛線虛擬繼承) 如何我可以讓Doxygen繪製更多如下內容。 。 。 D
/\
B C
\/
A
而不是:(如不發生虛繼承) D
/ \
B C
| |
A A
struct IA
{
virtual void Init() = 0;
.....
};
struct A : public IA
{
void Init() {};
.....
};
struct B : public A
{
int Init() { return 1; };
};
有了這樣的設計,我得到錯誤C2555
我有困難的時候undertsand什麼構成了以下類的大小? 我正在使用MSVS 2008(VC 9.0編譯器)。 我已經讀過,如果我沒有聲明虛函數(在下面的例子中),那麼D類將包含2個額外的指針(1個來自B,另一個來自C),它將指向共享實例A. 但是在下面的情況下將是每個類的內存映射(也有虛函數)? class A
{
public:
int a;
virtual void