作者ya790206 (残云夺月)
看板Programming
标题Re: C++ overriding/overriding的问题
时间Wed Feb 13 16:12:05 2008
※ 引述《sorryChen (陈扬和)》之铭言:
: (OOP没学好 见谅)
: 问题是:
: 定义了Class A..其中成员有一structure X
: Class B 继承 A 但想把里面的structure改掉改成另一种struct Y
: 那应该在Class B overload (用同名但型态不同的宣告.)
: 原来的虽然会被盖掉 但是contruct的时 是否还有X占空间?
: 还是要用通用的指针..然後继承的class里面在new..
: 话说刚才发现另一个问题是
: 对一个function 同时overrideing 和 overloading编译会有错
: Class A 中定义method m(int i)
: Class B继承A overload method m(int i)
: 又新定义 同名 m(char* c), 而且其中中还call m(int i) (等於用同名function包一层)
: 结果编译时有错误 说找不到定义或重复定义..
问题一,
X还是会占空间
实验:
class A
{
int x;
};
class B
{
char x;
};
printf("%d %d\n",sizeof(A),sizeof(B))
结果是4 1
改成
class A
{
int x;
};
class B:public A
{
char x;
};
结果是4 8
为何是八之前有人问过,不过我不懂
DevC++的结果
问题二
因为你在B类别定义了m(char *)
他overriding了m(int )
所以类别B没m(int )
你要呼叫类别A的m(int )须用
A::m(5);
有错请指教
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.116.135.217