0% found this document useful (0 votes)
42 views15 pages

OOPS Assignment 2

The document contains code snippets demonstrating various object-oriented programming concepts in C++, including operators, inheritance, abstract classes, and virtual functions. It provides code examples showing the functionality of operators like input/output, reference, class member access, and dynamic memory allocation. It also shows code for abstract classes, different inheritance types (single, multiple, multilevel), friend functions, and virtual functions.

Uploaded by

red stag
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
42 views15 pages

OOPS Assignment 2

The document contains code snippets demonstrating various object-oriented programming concepts in C++, including operators, inheritance, abstract classes, and virtual functions. It provides code examples showing the functionality of operators like input/output, reference, class member access, and dynamic memory allocation. It also shows code for abstract classes, different inheritance types (single, multiple, multilevel), friend functions, and virtual functions.

Uploaded by

red stag
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 15

SE-203

OBJECT ORIENTED
PROGRAMMING

ASSIGNMENT - 2

Submitted by -
Siddharth Mittal

2K22/SE/172
Q1)List the different operators in C++ with code snippets demonstrating their functionality

Ans. The different operators new to Ctt are -

1) Input-Output Operators
<< (Insertion or put to) - Used for output, typically to display data on the console or
write it to a file. It is often used with the cout stream.

>> (Extraction or get from) - Used for input to read data from the console or from a
file into a variable. It is commonly used with the cin stream.

2) Reference Operator
& - Used to create another reference identifier to an existing variable.

3) Class Member Access Operators


.(dot) Used to access a class member using object name.
->-Used to access a class member using pointer to object.

4) Scope Resolution Operator (::)


:: - Ithas multiple uses -
Accessing Global Variables or Functions
o Accessing Namespaces
o Defining Member Functions Outside the Class
o Accessing Class or Structure Members
o Accessing Classes in Multiple Inheritance
o Accessing Nested Classes
Accessing Static Members of Class

5) Member Dereferencing Operators


:* - Used in either declaration of apointer to a class member or access member
using class name and pointer tomember.
-* -Used to access a class member using a pointer to an object and pointer to
member.
6) Dynamic Memory Management Operators
new - Used to dynamically allocate memory.

delete - Used to deallocate dynamically allocaled memory using new.

7) Miscellaneous Operators
sizeof) - Used to determine the size (in bytes) of a datatype or an object.

Iypecast - Used for typeconversion of an expression.


typeid - Used to obtain information about the type of an expression or an object
at runtime.

CODES -

/Demonstrating the input and output operators '<< and >


#include <iostream>
using namespace std;
int main)

int n;
cout<<'enter a number:":
cin>>n;
cout<<"'number is "<<n<<endl:
return 0;

I/Demonstrating the '&' reference operator

#include <iostream>
using namespace std;
int main)

int x = 42:
cout<<"x="<<x<<endl;
x
int& y X;I/ yis areference tovalue
modifies the of x to 55
y=55; I/ This
cout<<"x="<<x<Kendl:
return 0;
/Demonstrating class member access operators
lland member dereferencing operators
#include <iostream>
using namespace std;
int main(0
class Demo

public:
int x;

Demo obj;
obj.x =42; l/Accessing class member using'"
cout<<"x="<<x<Kendl:

obj_ptr-&obj;
obj_ptr->x-30; //Accessing class member using '->'
cout<<"x="<<x<<endl;

int Demo:* mem ptr-&Demo::x; /Using ':* tocreate a pointer to a class member
obj.*mem ptr-69; lAccessing class member using':
cout<<"x="<<x<<endl;

obj ptr->*mem ptr-11; /Accessing class member using '->**


cout<<"x="<<x<Kendl;
return 0;

I/Demonstrating all functionalities of


l/the scope resolution operator
#include <iostream>
using namespace std;
/ Global variable

int globalVar=10;
|/Outer class
class Outer

public:
static int staticVar; // Static variable inside Outer class

1/ Nested class
class Inner

public:
static int innerVar; // Staticvariable inside Inner class
|/ Member function of lnner class
void displaylnnerVar()
cout<<"nner::innerVar: "<<innerVar<<<endl;

I/ Member function of Outer class


void displayStaticVar)
cout <<"Outer::staticVar: "<<staticVar<<endl;

I| Initialize static variables


int Outer::staticVar = 20;
int Outer::Inner: innerVar = 30;

int main()

int global Var = 5; |/Local variable with the same name as the global one
cout<<"Local globalVar: "<<globalVar <<endl;
cout<<"Global globalVar: "<K:globalVar <<endl;

Outer outerObj:
Outer::Inner innerObj;

outerObj.displayStaticVar();
innerObj.displaylnnerVar();
return 0;

I/Demonstrating use of new and delete operators


#include <iostream>
using namespace std;

int main(0

int *arr:
int size;
cout<<"Enter array size:";
cin>>size;
arr = new int[size ]; //Dynamic memoryallocation
cout<<"nMemory allocated to array dynamically... "<<endl:
cout<<"nEnter array elements:";
for(inti=0;i<size;i++)
cin>>arr[i];
cout<<"\nArray elements are: ";
for(inti=0:;i<size;i++)
cout<<arrlil<<"";

cout<<"\n\nDeleting array...array memory deallocated";


delete arr; /Freeing of dynamically allocated memory
return 0:

I/Demonstrating the sizeof(). typecast


l/and typeid operators
#include <iostream>
#include <typeinfo>
using namespace std;
int main()

I/ Declare variables of different data types


int integerVariable = 42;
double doubleVariable =3.14159;
char charVariable ='A';
bool boolVariable = true;

I/Use sizeof operator to determine the size of variables


cout << "Size of int: " << sizeof(int) <<" bytes" << endl;
cout << "Size of double: " << sizeof(double) <<" bytes" << endl;
cout << "Size of char:"<< sizeof(char) <<" byte" << endl;
cout << "Size of bool: " << sizeof(bool) <<"byte" << endl;

/ Use typecast operator to convert variables to different data types


double intToDouble =double(integerV ariable);
int doubleTolnt int(doubleVariable);
cout << "intToDouble: " << intToDouble << endl:
cout << "doubleTolnt: " << doubleTolnt << endl:

I/Use typeid operator to get the type information of variables


cout << "Type of integerVariable: " << typeid(integerVariable).name() << endl;
cout << "Type of doubleVariable: " << typeid(doubleVariable).name() << endl;
cout << "Type of charVariable: " <<typeid(charVariable). name() << endl;
cout <<"Type of boolVariable: " << typeid(boolVariable).name() << endl;
return 0;
02)Write code snippets implementing cach of the following concepts in C++
a) Overloading with friend functions

b) Abstract classes

c) Inheritance types

d) Virtual base classes

e) Virtual functions

CODE -

a) Overloading with friend functions


#include <iostream>
using namespace std;
class num
{
int val;
public:
num(int Val): val(Val){3

int get value()


return val;

friend int operator -(num); lOverloading unary operator


friend int operator +(int, num); //Overloading binary operator
friend int operator t(num, int); //Overloading binary operator

int operator -(num num1)


int temp-numl.val*(-1);
return temp;

int operator +(int x, num numl)

int tempFnuml.val+x;
return temp;

int operator +(num num1, int x)


int temp=num 1.val+x;
return temp;

int main()

int nl,n2;
cout<<"Enter a number nl:":
cin>>nl;
cout<<"Enter a number n2:":;
cin>>n2:
num nml(nl);
cout<<"nl="<<numl.get value()<<endl;
cout<<"-n1="<<-numl<<endl;
cout<<"nl+n2="<<num1+n2<<endl;
cout<<"'
return 0;n2+n]="<<n2+num1<<endl:

b) Abstract classes

//Demonstrating abstract class


#include <iostream>
using namespace std;
I| Abstract class with a pure virtual function
class Shape
public:
I/Pure virtual function makes this class abstract
virtual double area()const = 0;
virtual double perimeter) const = 0;
}:

I/Derived class 1: Circle


class Circle :public Shape
private:
double radius;
public:
Circle(double r) :radius(r) {}
I7 Implemnent the pure virtual functions
double area) const override

return 3.14159 * radius * radius;


double perimeter(0 const override
return 2*3.14159 * radius:

I Derived class 2: Rectangle


class Rectangle : public Shape
private:
double length;
double width:

public:
Rectangle(double 1, double w) : length(l), width(w)!
I/Implement the pure virtual functions
double area() const override

return length * width;

double perimeter() const override

return 2 * (length + width):

int main()

I/ Youcannot ereate an instance of the abstract class 'Shape'


I/Shape shape: //This willresult in a compilation eror
I/However, you can create instances of derived classes
Circle circle(3.0):
Rectangle rectangle(4.0, 6.0):
I/Use the abstract class pointer to access derived class objects
Shape* shapel = &circle:
Shape* shape? = &rectangle:
I/ Calculate anddisplav the area and perimeter of shapes shapel->perimeter) <<end]:
cout << "Circle Area: " << shapel->area() <K", Perimeter:" << <<shape2->perimeter() <<
cout << "Rectangle Area: " << shape2->area()<<", Perimeter: "
endl:

return 0:
c) Inheritance types

Demonstrating the different types of inheritance


lisingle, multiple, multilevel, hierarchical, hybrid inheritance
#include <iostream>

using namespace std;

|/ Base class
class Animal

public:
void eat()

cout << "Animal is eating." << endl:

IDerived class 1 (Single Inheritance)


class Dog:public Animal
public:
void bark)
cout << "Dog is barking." << endl;

I/ Derived class 2 (Multiple Inheritance)


class Bird

public:
void fly()
cout << "Bird is flying." << endl;
}:

class Parrot : public Animal, public Bird


public:
void talk)
Cout << "Parrot is talking." << endl;

Derived class 3 (Multilevel Inheritance)


Class Cat:public Animal
public:
void meow)
cout << "Cat is meowing." << endl;

class PersianCat : public Cat


public:
void purr()
cout << "Persian Cat is purring." << endl;

/ Derived class 4 (Hierarchical Inheritance)


class Lion: public Animal
public:
void roar)
cout << "Lion is roaring." << endl:

};
class Tiger : public Animal
public:
void growl)
cout << "Tiger is growling." << endl:

};
/Derived class 5 (Hybrid Inheritance)
class Liger : public Lion, public Tiger

public:
void specialAbility()
{
cout << "Liger has a special ability." << endl;

int main0
{
/ Single Inheritance Example
Dog dog:
dog.eat();
dog.bark);
cout<<"nn":

IIMultiple Inheritance Example


Parrot parrot;
parrot.eat):
parrot.fly):
parrot.talk0;
cout<<"nn":

/Multilevel Inheritance Example


PersianCat persianCat;
persianCat.eat():
persianCat.meow);
persianCat.purr();
cout<<"nn";

I/Hierarchical Inheritance Example


Lion lion;
lion.eat();
lion.roar():
cout<<"\n":

Tiger tiger;
tiger.eat();
tiger.growl0;
cout<<"nn":

/Hybrid Inheritance Example


Liger liger;
liger.eat():
liger.roar);
liger.growl):
liger.specialAbility();
return 0;

d) Virtual base classes

//Demonstrating virtual base classes

#include <iostream>

using namespace std;

I/Base class
class Animal

string name;
public:
void eat()
cout << "Animal is eating." << endl;

class Lion:virtual publicAnimal /Animal made virtual base class in hierarchy


public:
void roar)
cout << "Lion is roaring." << endl;

class Tiger: virtualpublic Animal /lAnimal made virtual base class in hierarchy
public:
void growl)
cout <<"Tiger is growling." << endl;

class Liger : public Lion, public Tiger


public:
void specialAbility)
cout << "Liger has a special ability." << endl:

int main0

Liger liger;
liger.eat();
liger.roar();
liger.growl);
liger.specialAbility();
return 0;
e) Virtualfunctions

I/Demonstrating virtual functions


#include <iostream>

using namespace std;


I/ Base class
class Shape
public:
I|Virtual function for calculating area
virtual double calculateArea)
return 0.0;
}

I/Derived class 1: Circle


class Circle : public Shape
{
private:
double radius;

public:
Circle(double r) : radius(r) {}
|/ Override the base class virtual function
double calculateArea) override

return 3.14159 * radius * radius:

/Derived class 2: Rectangle


class Rectangle : public Shape

private:
double width;
double height;
public:
Rectangle(double w, double h) : width(w), height(h)
function
//Override the base class virtual
double calculateArea) override

return width * height;

};
int main()

/Create objects of derived classes


Circle circle(5.0);
Rectangle rectangle(4.0, 6.0):
I/Use the base class pointer tocall the virtual function
Shape* shapel- &circle;
Shape* shape2 &rectangle;
/ Calculate and display areas
cout << "Area of Circle: " << shape1->calculate Area() << endl;
cout <<"Area of Rectangle: " << shape2->calculateArea() << endl;
return 0;

You might also like