G22.2210

Programming Languages: PL I

B. Mishra
New York University.


Lecture # 10

---Slide 1---
Classes of objects in C++

---Slide 2---
Pointers in C

---Slide 3---
CONSTRUCTOR

  class cell{
    cell(int i){info = i; next = this;}
    cell(int i, cell *n){info = i; next = n;}

   int info;
   cell *next;
  }

---Slide 4---
Deallocation

---Slide 5---
FRIENDS

---Slide 6---
circlist

---Slide 7---
Body of the class circlist

 void circlist::push(int x){
    rear->next = new cell(x, rear->next);
 }

 void circlist::enter(int x){
    rear->info = x;
    rear = rear->next = new cell(0,rear->next);
 }

 int circlist::pop(){
    if(empty()) return 0;
    cell *front = rear->next;
    rear->next = front->next;
    int x = front->info;
    delete front;
    return x;
 }

---Slide 8---
Nested Classes

Classes can be nested. However, because of C++ scope rules it leads to confusion. Poor style.

---Slide 9---
Derived Classes

---Slide 10---
Access Control Mechanisms

---Slide 11---
Public & Private Bases Classes

---Slide 12---
Example

---Slide 13---
Derived Class queue

---Slide 14---
Derived Class stack

---Slide 15---
Usage Example

 main(){
    stack s;
    queue q;

    s.push(1);
    s.push(2);
    s.pop;

    q.enter(4);
    q.exit();
    q.enter(5);

      .
      .
      .
 }

---Slide 16---
Virtual Functions

---Slide 17---
Example

---Slide 18---
Example (contd)

---Slide 19---
Usage: Virtual Functions

---Slide 20---
Subtypes & Supertypes

---Slide 21---
Parametric Polymorphism: TEMPLATE

---Slide 22---
Template Instantiation

---Slide 23---
Function Templates

---Last Slide---
Inheritance