揮発性のメモ2

http://d.hatena.ne.jp/iww/

stringを継承する

コンストラクタと代入演算子は継承されないので、親を呼ぶだけでもいいからちゃんと作る。

using namespace std;
#include <string>
class mystring : public string
{
  public:
    mystring() : string() {}
    mystring(const char *str) : string(str) {}
    mystring(const string &s) : string(s) {}

    mystring& operator=(const char *str) 
    {
        string::operator=(str);
        return *this;
    }
    mystring& operator=(const string& s) 
    {
        string::operator=(s);
        return *this;
    }
};
#include <iostream>
int main()
{
    mystring a = "ほげ"; // string(const char *str)を呼ぶ 
    cout << a << endl;

    mystring b;          // string()を呼ぶ
    b = "ほげ";          // operator=(const char *str)を呼ぶ
    cout << b << endl;

    string s = "ぴよ";
    mystring c = s;      // string(const string &s)を呼ぶ
    cout << c << endl;

    mystring d;          // string()を呼ぶ
    d = s;               // operator=(const string& s)を呼ぶ
    cout << d << endl;
  
    return 0;
}

文字列以外の情報を持つのであれば、コピーコンストラクタとかもちゃんと作ること。