53ningen.com

@gomi_ningen's Website

C++メモ

  • struct/class の違い ➡︎ デフォルトの可視性
  • 基本的にすべて値型
  • const は signature に含まれる
  • 抽象クラスを作るときは必ずデストラクタを作る

厨二病

class Base {
public:
    virtual void f() const volatile noexcept {

    }
};

class Derived: public Base {
public:
    virtual inline void f() const volatile noexcept override final {

    }
};

virtual 継承とそうでないものの違い

// | A.Base | B.Base  | Derived |
// | Base   | Derived |             // virtual

super クラスのコンストラクタを取り込む

class UsingBase
{
public:
    UsingBase(int) ...
Read More

Swift1系脳で出来ないと思い込んでいたことができるようになっていた件

再帰的構造を持つ enum

Swift 1 系では、再帰的構造を持つ enum を定義することはできませんでした。たとえば、

// swift 1, 2 ともに動かないコード
enum List<T> {
    case Nil
    case Cons(x: T, xs: List<T>)
}

というコードを書くと、Swift の処理系は受け付けてくれません。しかしながら、Swift2 はとても素晴らしい indirect という修飾子を導入することにより、再帰的構造を持つ enum を定義できるようになりました。

// swift 2 系では動く
indirect enum List<T> {
    case Nil
    case Cons(x: T, xs: List<T>)
}

また、挙動的に面白いのが、再帰的構造を持つが即座に評価されないようになっている場合、たとえば以下のような遅延ストリームについては、indirect 修飾子がなくても動くのです。これは Swift 1 系のときに挙動を試し...

Read More

Copyright © 53ningen.com