teaching machines

CS 330 Lecture 21 – Object-oriented Programming

March 24, 2014 by . Filed under cs330, lectures, spring 2014.

Agenda

TODO

Theorize This

On your own: How might polymorphism work?

With a neighbor: convince your neighbor that your theory is right.

What Does This Do?

  1. class IntAndDouble {
      public:
        IntAndDouble() {}
      private:
        double d;
        int i;
    };
    
    int main(int argc, char **argv) {
      std::cout << sizeof(IntAndDouble) << std::endl;
      return 0;
    }

  2. class TwoIntsAndDouble : public IntAndDouble {
      public:
        TwoIntsAndDouble() {}
      private:
        int j;
    };
    
    int main(int argc, char **argv) {
      std::cout << sizeof(TwoIntsAndDouble) << std::endl;                                                                                             
      return 0;
    }

  3. class IntAndDouble {
      public:
        IntAndDouble() {}
        virtual int Get() const {
          return i;
        }   
      private:
        double d;
        int i;
    };
    
    class TwoIntsAndDouble : public IntAndDouble {
      public:
        TwoIntsAndDouble() {}
        virtual int Get() const {
          return j;
        }   
      private:
        int j;
    };
    
    int main(int argc, char **argv) {
      std::cout << sizeof(IntAndDouble) << std::endl;
      std::cout << sizeof(TwoIntsAndDouble) << std::endl;                                                                                                                             
      return 0;
    }

Polymorphism without Conditions

Code

Sizeof.cpp

#include <iostream>

class IntAndDouble {
  public:
    /* IntAndDouble() {} */
    /* int Get() { return i; } */
  private:
    /* double d; */
    int i;
    int j;
};

int main(int argc, char **argv) {
  std::cout << sizeof(IntAndDouble) << std::endl;
  return 0;
}

Haiku

Dad said, “You can’t go”
I went and dug up his dad
“Gramps, make him say yes”