[cppll:9400] Re: オーバーロードかオーバーライドか?

9400
Subject:
[cppll:9400] Re: オーバーロードかオーバーライドか?
From:
Tietew <tietew@...>
Date:
Wed, 13 Aug 2003 15:02:21 +0900
X-Mailer:
Becky! ver. 2.06
Message-Id:
<20030813145458.27A3.TIETEW‐at‐tietew.net>
In-Reply-To:
9394
References:
9371 9394
Tietew です。

On Wed, 13 Aug 2003 06:41:52 +0900
In article <00b401c3611a$a76ba700$55ac723d@default>
[[cppll:9394] Re: オーバーロードかオーバーライドか?]
中田 俊介 <nakatasyunsuke@...> wrote:

> | class Base
> |   {public: char *getName () {return "Base" ;}} ;
> |
> | class Derived : public Base
> |   {public: char *getName () {return "Deived" ;}} ;

:

> | class Base
> |   {public String getName () {return "Base" ;}}
> |
> | class Derived extends Base
> |   {public String getName () {return "Deived" ;}}

Java のこれと上の C++ ソースを同列に語るのは間違いです。設計思想
が違いますから。比べるべきは↓です。
※※ Javaのクラス型変数は,C++ではポインタ
※※ Javaの(非final)メソッドは,C++ではvirtualメンバ関数

class Base {
public:
 virtual char *getName() { return "Base"; }
};
class Derived : public Base {
public:
 virtual char *getName() { return "Derived"; }
};

int main()
{
 Derived *derived = new Derived;
 Base *derivedInBase = derived;
 
 std::cout << "derived->getName():       "
               << derived->getName() << std::endl
           << "derivedInBase->getName(): "
               << derivedInBase->getName() << std::endl;
 
 delete derived;
 return 0;
}


—[ Tietew ]——— tietew@... / tietew@... ——————
■Tietew Windows Lab.                        http://www.tietew.net/
★C++:language&libraries過去ログ&なまず http://www.tietew.jp/cppll/
PGP fingerprint: 26CB 71BB B595 09C4 0153  81C4 773C 963A D51B 8CAA

スレッド

Navigation

検索

[検索ヘルプ]

Maintener: Tietew <www.tietew.jp>
Powered by Ruby on Rails, Mongrel, PostgreSQL, and Hyper Estraier.
click here