トップ «前の日記(2003-05-19) 最新 次の日記(2003-05-22)» 編集

おいぬま日報(不定期)

カテゴリ | 技術情報まとめWiki | 検索エンジンから来た人向け | RSS

2003年
5月
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31



2003-05-21 [長年日記]

@ [c++] スーパークラスのコンストラクタ呼び出し

ずっとどうやるのだろうと思案してましたが、下記のような感じでOKらしい。

#include <string>
 
/**
 * スーパークラス
 */
class MyObject {
public:
  MyObject(string s)
    :
    name(s)
  {}
 
  virtual string getName()
  {
    return name;
  }
 
private:
  string name;
 
};
 
/**
 * サブクラス
 */
class ExtendedObject : public MyObject {
public:
  ExtendedObject(string s)
    :
    MyObject(s) // スーパークラスのコンストラクタを呼ぶ
  {}
 
};
 
int main(int argc, char** argv)
{
  MyObject o1("super");
  cout << o1.getName() << endl;
  ExtendedObject o2("sub");
  cout << o2.getName() << endl;
  return 0;
}

実行結果

$ g++ MyObject.cpp
$ ./a.out
super
sub

ちなみにgetName関数がvirtualになっているのに特別な意味はないです。

本日のツッコミ(全3件) [ツッコミを入れる]
# たけぞう (2003-05-21 10:16)

こんな感じでやってました。<br>class ExtendObject : public MyObject {<br>public:<br> ExtendObject (string s) : MyObject (s){<br> ...<br> }<br>};

# おいぬめ (2003-05-21 22:30)

え、それは僕の例とどういう違いが?

# たけぞう (2003-05-22 09:57)

おお、同じだ!(あほ)


Bookmark: あんてな | ぶっくまーく | 覚え書き | Project Amateras | ExcelPettyCashBook | FreeStyle Wiki

2002|10|11|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|11|12|
2008|01|02|03|04|05|06|07|08|10|11|12|
人気ブログランキング - おいぬま日報(不定期)