1) Write a C++ programme which demonstrate static binding and dynamic binding.
2) Write a C++ programme which demonstrate vitual destructor.
1)
#include <iostream>
#include <string>
using namespace std;
class Person{
  protected:
  string name;
  int age;
  public:
  Person(string n, int a): name(n), age(a){}
  virtual void print(){}
};
class Student: public Person{
  protected:
  int std_id;
  float cgpa;
  public:
  Student(string n, int a, int id):
    Person(n, a), std_id(id){}
  void setCGPA(float gpa){
    cgpa = gpa;
  }
  void print(){
    cout<<"Name: "<<name<<endl;
    cout<<"Age: "<<age<<endl;
    cout<<"Student ID: "<<std_id<<endl;
    cout<<"CGPA: "<<cgpa<<endl;
  }
};
int main(){
  Person *ptr;
  Student Lucius("Lucius", 22, 11620641);
  ptr = &Lucius;
  //setCGPA is statically bounded
  Lucius.setCGPA(4.9);
 Â
  //print() is dynamically bounded
  ptr->print();
  return 0;
}
2)
#include <iostream>
#include <string>
using namespace std;
class Person{
  protected:
  string name;
  int age;
  public:
  Person(string n, int a): name(n), age(a){
    cout<<"Created a new person...\n";
  }
  virtual ~Person(){
    cout<<"Destroyed a person...\n";
  }
};
class Student: public Person{
  protected:
  int std_id;
  float cgpa;
  public:
  Student(string n, int a, int id):
    Person(n, a), std_id(id){
      cout<<"Created a new student...\n";
    }
  void setCGPA(float gpa){
    cgpa = gpa;
  }
  ~Student(){
    cout<<"Destroyed a student...\n";
  }
};
int main(){
  Person *ptr = new Student("Lucius", 22, 382323);
  delete ptr;
  return 0;
}
Comments
Leave a comment