Static and Const: CSC-210: Object Oriented Programming

Download as pdf or txt
Download as pdf or txt
You are on page 1of 17

CSC-210: Object Oriented Programming

Static and Const


Lecture 05

By: Ms. Zupash Awais


Bahria University Lahore Campus
 A static data member is useful, when all objects of
the same class must share a common
information.
 Just write static keyword prefix to regular variable
Static Data  It is initialized to zero when first object of class
Members created
 Only one copy is created for each object
 Its lifetime is entire program
 Data members of the class which are shared by all objects
are known as static data members.
 Only one copy of a static variable is maintained by the
class, and it is common for all objects.
 Static members are declared inside the class and
defined outside the class.

Static Data  It is initialized to zero when the first object of its class is
created.
Member  you cannot initialize a static member variable inside the
class declaration.
 It is visible only within the class, but its lifetime is the entire
program.
 Static members are generally used to maintain values
common to the entire class.
class demo Static Data members
{
static int count;
public:
void getcount()
{ count
cout<<"count="<<++count;
} 0
3
2
1
};

int demo::count;
d1 d2 d3
int main()
{
demo d1,d2,d3;
d1.getcount(); Static members are declared inside
d2.getcount(); the class and defined outside the
d3.getcount(); class.
return 0;
}
class demo
Regular Data members
{
int count;

public:
void getcount()
{
count = 0; d1 d3
cout<<"count="<< ++count;
d2
}
};
int main() 10 01 10
{
demo d1,d2,d3; count count count
d1.getcount();
d2.getcount();
d3.getcount();
return 0;
}
 Static member functions can access only static members
of the class.
 Static member functions can be invoked using class
name, not object.

Static Member  There cannot be static and non-static version of the same
function.
Functions
 They cannot be virtual.
 They cannot be declared as constant or volatile.
 A static member function does not have this pointer.
class item C++ Code
{
int number;
static int count;// static variable declaration
public:
void setdata(int a){
number = a;
count++; int main()
} {
static void getcount(){ item a,b,c;
cout<<“value of number: ”<<number;
cout<<“\nvalue of count: ”<<count; a.setdata(100);
} item::getcount();
};
int item :: count=10; // static variable definition b.setdata(200);
Output: item::getcount();
value of count: 11 c.setdata(300);
value of count: 12 item::getcount();
value of count: 13 return 0;
}
C++ Code
#include<iostream>
using namespace std;
class Count
{
static int counter;
public:
Count() Output:
{ 1
cout << counter++ <<endl; 2
} 3
};

int Count::counter = 1;

void main()
{
Count c, c1, c2;
}
class Life class Life
C++ Code
{ {
int i; int i;
public: public:
Life() Life()
{ {
i = 0; i = 0;
cout << "Constructor\n"; cout << "Constructor\n";
} }
~Life() ~Life()
{ {
cout << "Destructor\n"; cout << "Destructor\n";
} }
}; };

int main() int main()


{ {
int x = 0; int x = 0;
if (x == 0) if (x == 0)
{ {
Life obj; static Life obj;
} }
cout << "End of main\n"; cout << "End of main\n";
} }
 The const member functions are the functions which are
declared as constant in the program.
 The object called by these functions cannot be modified.
 It is recommended to use const keyword so that accidental
changes to object are avoided.

Const Members  Const data members must be initialized by the


constructor using an initialization list.
 Once initialized, a const data member may never be
modified, not even in the constructor or destructor.

 In Java you make constant variable using static final


keyword
class Constant
{
const int i = 10;
public:
Constant() :i(1) {}
void display()
{

Example C++ }
cout << i;

};
int main()
{
Constant c;
c.display();
}
 You can declare a method of a class to be const
 A const method can be called by any type of object.
 Non-const functions can be called by non-const objects
only.

Const Methods  A const method can be overloaded with a non-


const version.
 Constructors and destructors can never be declared
as const. They are always allowed to modify an object
even if the object is const.
#include<iostream>
using namespace std;
class Constant
{
const int i = 10;
int j;
public:
Constant() :i(1),j(0) {}
void display() const
{
Example cout << i<<“ “<<j<<endl;
}
};

int main()
{
Constant c,c1(40);
c.display();
c1.display();
}
 The objects of a class can also be declared as const.
 An object declared as const cannot be modified and
hence, can invoke only const member functions as
these functions ensure not to modify the object.
Const Objects  A const object can be created by prefixing the const
keyword to the object declaration. Any attempt to
change the data member of const objects results in a
compile-time error.
#include<iostream>
using namespace std;
class Constant
{
const int i = 10;
int j;
public:
Constant() :i(1),j(0) {}
Constant(int a) :j(a) {}
void display() const
{
cout << i << " " << j << endl;
}
void display2() int main()
{ {
cout << i << " " << j << endl; Constant c,c1(40);
} c.display();
}; c1.display();
const Constant c2(2),c3;
c2.display();
c3.display();
}
 A copy constructor is a member function that initializes
an object using another object of the same class. A copy
constructor has the following general function
Copy prototype:
Constructor ClassName (const ClassName &old_obj);
#include<iostream> C++ Code
using namespace std;
class Real
{
int i,j;
public:
Real() :i(0), j(0) { cout << "Default Constructor Called\n"; }
Real(int a, int b)
{
i = a;
j = b;
cout << "\nParameterized Constructor Called\n";
}
Real(const Real& r)
{ int main()
i = r.i; {
j = r.j; Real r1;
cout << "\nCopy Constructor Called\n"; r1.display();
} Real r2(2, 4);
void display() r2.display();
{ Real r3 = r2;
cout << i << " " << j << endl; r3.display();
}
}
};

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy