0% found this document useful (0 votes)
4 views

CSC307 Assignment Project

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

CSC307 Assignment Project

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

Name: Nwokocha Christian Chukwuemeka

Reg No: 20191154132

Department: Computer Science

Course: CSC307 (Structured Programming)

Topic: Explain how C++ Manages Polymorphism

DEFINITION OF POLYMORPHISM

Polymorphism is a programming concept that allows objects of different types to


be treated as if they were the same type. Specifically, polymorphism refers to the
ability of objects to take on multiple forms, and to be used in different contexts
without changing their underlying behavior.

There are two main types of polymorphism: compile-time (or static)


polymorphism, and runtime (or dynamic) polymorphism.

Compile-time polymorphism is achieved through the use of function overloading


or templates. Function overloading allows multiple functions with the same name
to be defined, but with different parameters, so that the correct version of the
function is called based on the arguments passed to it. Templates are a way of
writing generic code that can be used with different types, without having to write
separate code for each type.

Runtime polymorphism is achieved through the use of inheritance and virtual


functions. Inheritance allows new classes to be defined based on existing classes,
inheriting their properties and behaviors. Virtual functions allow derived classes to
override the behavior of functions defined in the base class, so that the correct
version of the function is called based on the actual type of the object at runtime.

Polymorphism is a key feature of object-oriented programming, and is used to


write code that is more flexible, maintainable, and reusable. By allowing objects of
different types to be treated as if they were the same type, polymorphism enables
more generic and modular programming, which can simplify development and
reduce code duplication.
HOW C++ MANAGES POLYMORPHISM

In C++, polymorphism refers to the ability of objects of different types to be used


interchangeably when calling methods or functions. There are two main types of
polymorphism in C++: compile-time polymorphism (also known as static
polymorphism) and runtime polymorphism (also known as dynamic
polymorphism).

Compile-time polymorphism is achieved through the use of templates and function


overloading. Templates allow you to write generic code that can be used with any
type, while function overloading allows you to define multiple functions with the
same name but different parameter types. When you call a template or overloaded
function, the compiler determines which version of the function to call based on
the types of the arguments passed to it.

Runtime polymorphism is achieved through the use of virtual functions and


inheritance. Inheritance allows you to create new classes based on existing ones,
while virtual functions allow you to override the behavior of functions in derived
classes. When you call a virtual function on a base class pointer that points to an
object of a derived class, the actual function that is called is determined at runtime
based on the type of the object.

Here is an example:

class Animal {

public:

virtual void speak() {

std::cout << "Animal speaks!" << std::endl;

};
class Cat : public Animal {

public:

void speak() override {

std::cout << "Meow!" << std::endl;

};

class Dog : public Animal {

public:

void speak() override {

std::cout << "Woof!" << std::endl;

};

int main() {

Animal* a = new Animal();

Animal* b = new Cat();

Animal* c = new Dog();

a->speak(); // Output: "Animal speaks!"

b->speak(); // Output: "Meow!"

c->speak(); // Output: "Woof!"


}

In this example, we have a base class Animal with a virtual function speak(). We
then define two derived classes Cat and Dog that override the speak() function. In
the main() function, we create three pointers of type Animal* that point to objects
of different types (Animal, Cat, and Dog). When we call the speak() function on
each of these pointers, the actual function that is called is determined at runtime
based on the type of the object being pointed to. This is an example of runtime
polymorphism in action.

You might also like