Classes and Objects

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 7

C++ Classes and Objects

C++ Classes/Objects
C++ is an object-oriented programming language.

Everything in C++ is associated with classes and objects, along with its attributes and methods. For example: in real
life, a car is an object. The car has attributes, such as weight and color, and methods, such as drive and brake.
Attributes and methods are basically variables and functions that belongs to the class. These are often referred to as
"class members".

A class is a user-defined data type that we can use in our program, and it works as an object constructor, or a
"blueprint" for creating objects.

Create a Class
To create a class, use the class keyword:

#include <iostream>
#include <string>
using namespace std;

class MyClass { // The class


public: // Access specifier
int myNum; // Attribute (int variable)
string myString; // Attribute (string variable)
};

int main() {
MyClass myObj; // Create an object of MyClass

// Access attributes and set values


myObj.myNum = 15;
myObj.myString = "Some text";

// Print values
cout << myObj.myNum << "\n";
cout << myObj.myString;
return 0;
}
#include <iostream>
#include <string>
using namespace std;

class Car {
public:
string brand;
string model;
int year;
};

int main() {
Car carObj1;
carObj1.brand = "BMW";
carObj1.model = "X5";
carObj1.year = 1999;

Car carObj2;
carObj2.brand = "Ford";
carObj2.model = "Mustang";
carObj2.year = 1969;

cout << carObj1.brand << " " << carObj1.model << " " << carObj1.year << "\n";
cout << carObj2.brand << " " << carObj2.model << " " << carObj2.year << "\n";
return 0;
}

Output:

BMW X5 1999
Ford Mustang 1969

C++ Classes and Objects

The main purpose of C++ programming is to add object orientation to the C programming language and classes are
the central feature of C++ that supports object-oriented programming and are often called user-defined types.

A class is used to specify the form of an object and it combines data representation and methods for manipulating
that data into one neat package. The data and functions within a class are called members of the class.

C++ Class Definitions

When you define a class, you define a blueprint for a data type. This doesn't actually define any data, but it does
define what the class name means, that is, what an object of the class will consist of and what operations can be
performed on such an object.

A class definition starts with the keyword class followed by the class name; and the class body, enclosed by a pair of
curly braces. A class definition must be followed either by a semicolon or a list of declarations. For example, we
defined the Box data type using the keyword class as follows –

class Box {
public:
double length; // Length of a box
double breadth; // Breadth of a box
double height; // Height of a box
};

The keyword public determines the access attributes of the members of the class that follows it. A public member
can be accessed from outside the class anywhere within the scope of the class object. You can also specify the
members of a class as private or protected which we will discuss in a sub-section.

Define C++ Objects

A class provides the blueprints for objects, so basically an object is created from a class. We declare objects of a class
with exactly the same sort of declaration that we declare variables of basic types. Following statements declare two
objects of class Box −

Box Box1; // Declare Box1 of type Box


Box Box2; // Declare Box2 of type Box

Both of the objects Box1 and Box2 will have their own copy of data members.

Accessing the Data Members


The public data members of objects of a class can be accessed using the direct member access operator (.). Let us try
the following example to make the things clear −

#include <iostream>

using namespace std;

class Box {
public:
double length; // Length of a box
double breadth; // Breadth of a box
double height; // Height of a box
};

int main() {
Box Box1; // Declare Box1 of type Box
Box Box2; // Declare Box2 of type Box
double volume = 0.0; // Store the volume of a box here

// box 1 specification
Box1.height = 5.0;
Box1.length = 6.0;
Box1.breadth = 7.0;

// box 2 specification
Box2.height = 10.0;
Box2.length = 12.0;
Box2.breadth = 13.0;

// volume of box 1
volume = Box1.height * Box1.length * Box1.breadth;
cout << "Volume of Box1 : " << volume <<endl;

// volume of box 2
volume = Box2.height * Box2.length * Box2.breadth;
cout << "Volume of Box2 : " << volume <<endl;
return 0;
}
When the above code is compiled and executed, it produces the following result −

Volume of Box1 : 210


Volume of Box2 : 1560

It is important to note that private and protected members can not be accessed directly using direct member access
operator (.). We will learn how private and protected members can be accessed.

C++ String Class


In C++, the string class is used to represent a sequence of characters as an object of the class.

We can access the various string class functions by including the <string> header in our file.

#include <string>

String Class Functions


The common functions that are used with the string class are.

#include <iostream>
#include <string>
using namespace std;

int main() {

string str = "Hello world, wonderful world!";


cout << "String: " << str << endl;

// find the first occurrence


size_t first_occurrence = str.find("world");

// find the last occurrence


size_t last_occurrence = str.rfind("world");

if (first_occurrence != string::npos) {
cout << "First occurrence: 'world' found at position: " << first_occurrence << endl;
cout << "Last occurrence: 'world' found at position: " << last_occurrence << endl;
}
else {
cout << "'world' not found" << endl;
}

return 0;
}

String: Hello world, wonderful world!


First occurrence: 'world' found at position: 6
Last occurrence: 'world' found at position: 23

=== Code Execution Successful ===

Example 2: Append to a String


We can append a string to an existing string using the append() function. For example,

#include <iostream>
#include <string>
using namespace std;

int main() {

string str = "Hello world,";


cout << "Before: " << str << endl;

//append the string


str.append(" Have a good day!");

cout << "After: " << str << endl;

return 0;
}

Before: Hello world,


After: Hello world, Have a good day!

=== Code Execution Successful ===

Example 3: Insert a String at a Given Position


We can insert a string at any given position using the insert() function. For example,

#include <iostream>
#include <string>
using namespace std;

int main() {

string str = "Hello world, world!";


cout << "Before: " << str << endl;

// insert "beautiful" at the 13th index


str.insert(13, " beautiful");

cout << "After: " << str << endl;

return 0;
}

Before: Hello world, world!


After: Hello world, beautifulworld!

=== Code Execution Successful ===

Example 4: Erase N Characters From the Given Position

#include <iostream>
#include <string>
using namespace std;

int main() {

string str = "Hello world, beautiful world!";


cout << "Before: " << str << endl;

// erase five characters starting from the seventh index


str.erase(7, 5);

cout << "After: " << str << endl;

return 0;
}

Before: Hello world, beautiful world!


After: Hello w beautiful world!

=== Code Execution Successful ===

Example 5: Replace N Characters Within A String


#include <iostream>
#include <string>
using namespace std;

int main() {

string str = "Hello world, beautiful world!";


cout << "Before: " << str << endl;

// replace two characters with "Earth"


// starting from the seventh index
str.replace(6, 2, "Earth");

cout << "After: " << str << endl;

return 0;
}
Before: Hello world, beautiful world!
After: Hello Earthrld, beautiful world!

=== Code Execution Successful ===

Example 6: Compare Strings Alphabetically


To get the lexicographic relations between strings, we use the compare() function.
The compare() function in the C++ string class returns an integer that indicates the lexicographical relationship
between the compared strings. It returns:
 0 - if the compared strings are equal.
 < 0 - if the calling string is lexicographically less than the compared string.
 > 0 - if the calling string is lexicographically greater than the compared string.
For example,
#include <iostream>
#include <string>
using namespace std;

int main() {

string str1 = "Hello world";


string str2 = "Hello world";
string str3 = "Hello";
string str4 = "Hello world, What's Up?";

cout << "String 1: " << str1 << endl;


cout << "String 2: " << str2 << endl;
cout << "String 3: " << str3 << endl;
cout << "String 4: " << str4 << endl;

// compare the strings


cout <<"Comparing String 1 and String 2: " << str1.compare(str2) << " (Equal)" <<endl;
cout <<"Comparing String 1 and String 3: " << str1.compare(str3) << " (String 1 is Longer)" << endl;
cout <<"Comparing String 1 and String 4: " << str1.compare(str4) <<" (String 1 is Smaller)" << endl;

return 0;
}

String 1: Hello world


String 2: Hello world
String 3: Hello
String 4: Hello world, What's Up?
Comparing String 1 and String 2: 0 (Equal)
Comparing String 1 and String 3: 6 (String 1 is Longer)
Comparing String 1 and String 4: -12 (String 1 is Smaller)

=== Code Execution Successful ===

You might also like