読者です 読者をやめる 読者になる 読者になる

貝柱が何かをする所

貝柱が何かをする所です、C++/Perl/その他諸々

メンバ変数のHidingの練習

いいわけ

今週末は少々忙しかったので記事を書く余裕がなかった。
......というのは言い訳であまり今週は記事に出来るようなテクニックに触れてこなかった。
貝柱ではなく別のアカウントで、「同じ課題」に対して多数の言語でプログラムを書くという練習を行った。
そちらを記事にしても良いのだが、別件でもう少しプログラム内容について精査したいので、また改めて後日ということにする。
Scalaにもう少し深く触れたい。

まえがき

C++ではクラスを継承する際、継承元のメンバ変数を完全に上書きして"隠す"技が存在する。
俗に「Hiding」などと呼ばれるが、あまり良い実用例が思い浮かばない。

コード

何かに使えそうなテクニックだ。
どこかで使われているなら、ぜひ教えてほしい。

#include <iostream>
#include <functional>


//Base構造体
struct Base{
    std::function<void(int)> showInt;
};


//Baseから派生した構造体
struct SameBase : public Base{
    std::function<void(int, int)> showInt;
};


int main(void){
    SameBase base;
    base.showInt = [=](int value,int value2){
        std::cout << "show:" << value + value2 << std::endl;
    };
    base.showInt(20, 30);

    return 0;
}

上記のコードは継承元のshowIntをHidingしている。

overrideやoverloadとはまた違い、また別のテクニックとして何かできないだろうか?