技術ブログとか

C/C++/C#/DirectX/Effect

近況とoverrideとアクセス指定

1ヶ月サボってしまった。

正しく言うならサボっていたわけではなくて、年末年始で色々あった。

とりあえず色々あったことをまとめてみる。

 

まず、早稲田大学のサークルである「早稲田コンピュータエンタテインメント」さんが主催する、10時間GameJamに参加させていただいた。

GameJam系のイベントはGlobalGameJamなどが有名だが、今回参加した10時間GameJamはチーム制作ではなく、個人で10時間以内にゲームを作るイベントである。

今回が第1回だったようだが、18人の方々が参加し、スポンサーに企業までついており、非常にしっかりした印象を受けた。

また、イベントの最後には作品投票もあり、そこで1位という嬉しい結果をいただくことができた。

作品の配布ページはこの記事を書いている時点では準備中だが、そのうちサイト上で参加者それぞれの作品が配布されるらしい。

また近いうちに第2回も開催されるようなので、そちらにも是非参加したい。

 

次に、大学内のサークル同士で合同LT会を行った。

飛び入り含めて発表者は13人で、様々なテーマのトークが飛び交い、楽しい交流の場となった。

その時の発表スライドがこれ。  

今週火曜に合同作品発表会があるので、そちらの様子も見て2回目以降も開催できたらいいなと思ってる。

 

あとはおまけ程度のプログラミング。

Javaではprivateに指定したメソッドを派生クラスでoverrideしようとすると怒られるらしい。

また、publicprotected指定のメソッドをprivateでoverrideするなど、アクセス制限を厳しくするとこれも怒られる。

これがC++ではどちらも許されている。

#include <iostream>
using namespace std;

class Parent
{
public:
    void func()
    {
        privateFunc();
    }
private:
    // privateの仮想関数
    virtual void privateFunc()
    {
        cout << "Parent" << endl;
    }
};

class Child
    : public Parent
{
private:
    // privateの仮想関数をoverrideする
    void privateFunc() override
    {
        cout << "Child" << endl;
    }
};

int main()
{
    Child child;
    Parent &parent = child;

    // "Child" が出力される
    parent.func();
}

便利そうに見えて上手い使い方が思いつかないし、C#ではJavaより制限が厳しくなってるし、おそらく有効活用するときは来ないだろう。