我有以下代碼:關於C++多重繼承的問題?
#include "stdafx.h"
#include <iostream>
#include <conio.h>
using namespace std;
#define MNAME 30
class Person {
public:
char name[MNAME + 1];
};
class Student : public Person {
};
class Staff : public Person {
};
class Faculty : public Student, public Staff {
};
int _tmain(int argc, _TCHAR* argv[])
{
Faculty faculty;
cout << "Address of faculty.Person::name: " << &faculty.Person::name << endl;
cout << "Address of faculty.Student::name: " << &faculty.Student::name << endl;
cout << "Address of faculty.Staff::name: " << &faculty.Staff::name << endl;
getch();
return 0;
}
執行時,程序給出了結果:
Address of faculty.Person::name: 0012FF20 // **Line 1**
Address of faculty.Student::name: 0012FF20 // **Line 2**
Address of faculty.Staff::name: 0012FF3F // **Line 3**
我不明白這一點。爲什麼Line 1
和Line 2
中的地址與Line 3
不同,而學生和工作人員都繼承了Person的名字?
+1得到最詳細的答案。我認爲這個ASCII藝術應該被接受爲 – 2011-05-18 13:20:51
+1。 – 2011-05-18 16:55:14