SlideShare a Scribd company logo
Lecture-2Chapter-12
Abu Saleh Musa Miah
M.Sc. Engg(On going)
University of Rajshahi
Lecturer
Rajshahi Engineering Science and Technology college.
Friend class Example:
It is possible for one class to be a friend of another class. When this is the case, the
friend class and all of its member functions have access to the private members
defined within the other class.
include <iostream>
using namespace std;
class TwoValues {
int a;
Int b;
public:
TwoValues(int i, int j) { a = i; b =
j; }
friend class Min; };
class Min {
public:
int min(TwoValues x);
};
int min(TwoValues x)
{
return x.a < x.b ? x.a : x.b;
}
int main()
{
TwoValues ob(10, 20);
Min m;
cout << m.min(ob);
return 0;
}
Inline function:
There is an important feature in C++, called an inline function, that is commonly used with
classes. you can create short functions that are not actually called; rather, their code is
expanded in line at the point of each invocation. This process is similar to using a function-like
macro. To cause a function to be expanded in line rather than called,precede its definition with
the inline keyword.
inline void myclass::show()
{
cout << a << " " << b << "n";
}
int main()
{
myclass x;
x.init(10, 20);
x.show();
return 0;
#include <iostream>
using namespace std;
class myclass {
int a, b;
public:
void init(int i, int j);
void show();
};
// Create an inline function.
inline void myclass::init(int i, int j)
{
a = i;
b = j;
Parameterized Constructor:
It is possible to pass arguments to constructor functions. Typically, these arguments help initialize an
object when it is created. To create a parameterized constructor, simply add parameters to it the way
you would to any other function. When you define the constructor's body, use the parameters to
initialize the object.
int main()
{
myclass ob(3, 5);
ob.show();
return 0;
}
#include <iostream>
using namespace std;
class myclass {
int a, b;
public:
myclass(int i, int j) {a=i; b=j;}
void show() {cout << a << " " << b;}
};
Static Class
Member:
Both function and data members
of a class can be made static. This
section explains the
consequences of each.
Static data member:
When you precede a member variable's declaration with static, you are telling the compiler that only
one copy of that variable will exist and that all objects of the class will share that variable All static
variables are initialized to zero before the first object
int shared::a; // define a
void shared::show()
{
cout << "This is static a: " << a;
cout << "nThis is non-static b: " << b;
cout << "n";
}
#include <iostream>
using namespace std;
class shared {
static int a;
int b;
public:
void set(int i, int j)
{a=i;
b=j;}
void show();
} ;
Static data member:
static a: 1
non-static b: 1
static a: 2
non-static b: 2
static a: 2
non-static b: 1
int main()
{
shared x, y;
x.set(1, 1); // set a to 1
x.show();
y.set(2, 2); // change a to
2
y.show();
x.show(); /* Here, a has
been changed for both x
and y
because a is shared by
both objects. */
return 0;
}
Static member function:Member functions may also be declared as static. There are several
restrictions placed on static member functions. They may only directly refer
to other static members of the class.
int main()
{
cl ob1, ob2;
if(cl::get_resource()) cout << "ob1 has
resourcen";
if(!cl::get_resource()) cout << "ob2
denied resourcen";
ob1.free_resource();
if(ob2.get_resource())
cout << "ob2 can now use resourcen";
return 0;
}
#include <iostream>
using namespace std;
class cl {
static int resource;
public:
static int get_resourc ();
void free_resource() { resource = 0;
} };
int cl::resource; // define resource
int cl::get_resource()
{
if(resource) return 0;
else {
resource = 1;
return 1;
} }
WhenConstructoranddestructorareExecution:
As a general rule, an object's constructor is called when the object comes
into existence, and an object's destructor is called when the object is
destroyed. Precisely when these events occur is discussed here.
int main()
{
myclass local_ob1(3);
cout << "This will not be first line
displayed.n";
myclass local_ob2(4);
return 0;
}
It displays this output:
Initializing 1
Initializing 2
Initializing 3
This will not be first line displayed.
Initializing 4
#include <iostream>
using namespace std;
class myclass {
public:
int who;
myclass(int id);
~myclass();
} glob_ob1(1), glob_ob2(2);
myclass::myclass(int id)
{
cout << "Initializing " << id <<
"n";
who = id;
}
myclass::~myclass()
{
cout << "Destructing " << who
The scope resolution operator:
The :: operator links a class name with a member name in order to tell the
compiler what class the member belongs to. However, the scope resolution
operator has another related use: it can allow access to a name in an
enclosing scope that is "hidden" by a local declaration of the same name.
int main()
{
myclass local_ob1(3);
cout << "This will not be first line
displayed.n";
myclass local_ob2(4);
return 0;
}
It displays this output:
Initializing 1
Initializing 2
Initializing 3
This will not be first line displayed.
Initializing 4
#include <iostream>
using namespace std;
class myclass {
public:
int who;
myclass(int id);
~myclass();
} glob_ob1(1), glob_ob2(2);
myclass::myclass(int id)
{
cout << "Initializing " << id <<
"n";
who = id;
}
myclass::~myclass()
{
The scope resolution operator:
The :: operator links a class name with a member name
in order to tell the compiler
 what class the member belongs to.
 the scope resolution operator has another related use:
it can allow access to a name in an enclosing scope
that is "hidden" by a local declaration of the same
name.
Nested class
 It is possible to define one class within another.
 Doing so creates a nested class.
 Since a class declaration does, in fact, define a scope,
a nested class is valid only within the scope of the
enclosing class.
 Frankly, nested classes are seldom used.
Nested classMember functions may also be declared as static. There are several
restrictions placed on static member functions. They may only directly refer
to other static members of the class.
void f()
{
class myclass {
int i;
public:
void put_i(int n) { i=n; }
int get_i() { return i; }
} ob;
ob.put_i(10);
cout << ob.get_i();
}
#include <iostream>
using namespace std;
void f();
int main()
{
f();
// myclass not known here
return 0;
}
Passing object to function
Objects may be passed to functions in just the same way that any other type
of variable can. Objects are passed to functions through the use of the
standard call-by value mechanism. This means that a copy of an object is
made when it is passed to a function.
myclass::myclass(int n)
{
i = n;
cout << "Constructing " << i <<
"n";
}
myclass::~myclass()
{
cout << "Destroying " << i << "n";
}
class myclass {
int i;
public:
myclass(int n);
~myclass();
void set_i(int n) { i=n; }
int get_i() { return i; }
};

More Related Content

PPTX
Lecture 4.2 c++(comlete reference book)
PPTX
classes & objects in cpp overview
PPTX
Classes and objects1
PPTX
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
PPTX
Class object method constructors in java
PDF
CLASSES, STRUCTURE,UNION in C++
PDF
Java ppt Gandhi Ravi ([email protected])
PDF
Constructors and Destructors
Lecture 4.2 c++(comlete reference book)
classes & objects in cpp overview
Classes and objects1
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
Class object method constructors in java
CLASSES, STRUCTURE,UNION in C++
Java ppt Gandhi Ravi ([email protected])
Constructors and Destructors

What's hot (20)

PPTX
Constructor ppt
PPTX
constructors in java ppt
DOCX
Advanced data structures using c++ 3
PPTX
Constructor in java
KEY
What's New In Python 2.6
PPT
Oop lec 5-(class objects, constructor & destructor)
PDF
Javascript basic course
PPT
Basic Javascript
PPTX
constructor and destructor
PPTX
Lecture 7, c++(complete reference,herbet sheidt)chapter-17.
PDF
Constructors destructors
PPT
data Structure Lecture 1
PPTX
Unit ii
PPT
Oop Constructor Destructors Constructor Overloading lecture 2
PPTX
Constructor&method
PPTX
Constructor and Destructor in c++
PPTX
Constructors and Destructors
PPT
Lec 42.43 - virtual.functions
DOCX
C questions
Constructor ppt
constructors in java ppt
Advanced data structures using c++ 3
Constructor in java
What's New In Python 2.6
Oop lec 5-(class objects, constructor & destructor)
Javascript basic course
Basic Javascript
constructor and destructor
Lecture 7, c++(complete reference,herbet sheidt)chapter-17.
Constructors destructors
data Structure Lecture 1
Unit ii
Oop Constructor Destructors Constructor Overloading lecture 2
Constructor&method
Constructor and Destructor in c++
Constructors and Destructors
Lec 42.43 - virtual.functions
C questions
Ad

Viewers also liked (16)

PPTX
Vbmca204821311240
PPTX
Lecture 5, c++(complete reference,herbet sheidt)chapter-15
PPT
Data warehousing
PPTX
Data warehousing
PPT
Data mining: Concepts and Techniques, Chapter12 outlier Analysis
PPT
Data Mining:Concepts and Techniques, Chapter 8. Classification: Basic Concepts
PPTX
Data Mining: Classification and analysis
PPTX
Lecture 3, c++(complete reference,herbet sheidt)chapter-13
PPTX
Lecture 4, c++(complete reference,herbet sheidt)chapter-14
PPTX
Lecture 6, c++(complete reference,herbet sheidt)chapter-16
PDF
C++ Complete Reference
PPT
Gulabs Ppt On Data Warehousing And Mining
PPTX
Data warehouse and data mining
PPT
2.1 Data Mining-classification Basic concepts
PPT
Data Mining and Data Warehousing
PPTX
Slideshare ppt
Vbmca204821311240
Lecture 5, c++(complete reference,herbet sheidt)chapter-15
Data warehousing
Data warehousing
Data mining: Concepts and Techniques, Chapter12 outlier Analysis
Data Mining:Concepts and Techniques, Chapter 8. Classification: Basic Concepts
Data Mining: Classification and analysis
Lecture 3, c++(complete reference,herbet sheidt)chapter-13
Lecture 4, c++(complete reference,herbet sheidt)chapter-14
Lecture 6, c++(complete reference,herbet sheidt)chapter-16
C++ Complete Reference
Gulabs Ppt On Data Warehousing And Mining
Data warehouse and data mining
2.1 Data Mining-classification Basic concepts
Data Mining and Data Warehousing
Slideshare ppt
Ad

Similar to Lecture 2, c++(complete reference,herbet sheidt)chapter-12 (20)

PPTX
Class and object
PPT
classandobjectunit2-150824133722-lva1-app6891.ppt
PPT
Unit vi(dsc++)
PPT
classes & objects.ppt
PPTX
class c++
PPT
CLASSES AND OBJECTS IN C++ +2 COMPUTER SCIENCE
PPTX
object oriented programming language.pptx
PDF
22 scheme OOPs with C++ BCS306B_module1.pdf
PPT
C++ Programming Course
PPT
Ccourse 140618093931-phpapp02
PPTX
OOPs & C++ UNIT 3
PPT
4 Classes & Objects
PPT
Bca 2nd sem u-2 classes & objects
PDF
Implementation of oop concept in c++
PPT
Mca 2nd sem u-2 classes & objects
PPTX
Presentation on class and object in Object Oriented programming.
PDF
Introduction to C++ Class & Objects. Book Notes
PPT
Constructor,destructors cpp
PPTX
C++ppt. Classs and object, class and object
PPTX
05 Object Oriented Concept Presentation.pptx
Class and object
classandobjectunit2-150824133722-lva1-app6891.ppt
Unit vi(dsc++)
classes & objects.ppt
class c++
CLASSES AND OBJECTS IN C++ +2 COMPUTER SCIENCE
object oriented programming language.pptx
22 scheme OOPs with C++ BCS306B_module1.pdf
C++ Programming Course
Ccourse 140618093931-phpapp02
OOPs & C++ UNIT 3
4 Classes & Objects
Bca 2nd sem u-2 classes & objects
Implementation of oop concept in c++
Mca 2nd sem u-2 classes & objects
Presentation on class and object in Object Oriented programming.
Introduction to C++ Class & Objects. Book Notes
Constructor,destructors cpp
C++ppt. Classs and object, class and object
05 Object Oriented Concept Presentation.pptx

Recently uploaded (20)

PDF
Trump Administration's workforce development strategy
PPTX
school management -TNTEU- B.Ed., Semester II Unit 1.pptx
PDF
Computing-Curriculum for Schools in Ghana
PDF
Classroom Observation Tools for Teachers
PDF
A GUIDE TO GENETICS FOR UNDERGRADUATE MEDICAL STUDENTS
PDF
Complications of Minimal Access Surgery at WLH
PDF
OBE - B.A.(HON'S) IN INTERIOR ARCHITECTURE -Ar.MOHIUDDIN.pdf
PDF
Microbial disease of the cardiovascular and lymphatic systems
PPTX
Tissue processing ( HISTOPATHOLOGICAL TECHNIQUE
PDF
LDMMIA Reiki Yoga Finals Review Spring Summer
PPTX
Final Presentation General Medicine 03-08-2024.pptx
PDF
Weekly quiz Compilation Jan -July 25.pdf
PDF
01-Introduction-to-Information-Management.pdf
PPTX
Radiologic_Anatomy_of_the_Brachial_plexus [final].pptx
PDF
Paper A Mock Exam 9_ Attempt review.pdf.
PDF
RTP_AR_KS1_Tutor's Guide_English [FOR REPRODUCTION].pdf
PPTX
Introduction-to-Literarature-and-Literary-Studies-week-Prelim-coverage.pptx
PDF
What if we spent less time fighting change, and more time building what’s rig...
PDF
A systematic review of self-coping strategies used by university students to ...
PDF
The Lost Whites of Pakistan by Jahanzaib Mughal.pdf
Trump Administration's workforce development strategy
school management -TNTEU- B.Ed., Semester II Unit 1.pptx
Computing-Curriculum for Schools in Ghana
Classroom Observation Tools for Teachers
A GUIDE TO GENETICS FOR UNDERGRADUATE MEDICAL STUDENTS
Complications of Minimal Access Surgery at WLH
OBE - B.A.(HON'S) IN INTERIOR ARCHITECTURE -Ar.MOHIUDDIN.pdf
Microbial disease of the cardiovascular and lymphatic systems
Tissue processing ( HISTOPATHOLOGICAL TECHNIQUE
LDMMIA Reiki Yoga Finals Review Spring Summer
Final Presentation General Medicine 03-08-2024.pptx
Weekly quiz Compilation Jan -July 25.pdf
01-Introduction-to-Information-Management.pdf
Radiologic_Anatomy_of_the_Brachial_plexus [final].pptx
Paper A Mock Exam 9_ Attempt review.pdf.
RTP_AR_KS1_Tutor's Guide_English [FOR REPRODUCTION].pdf
Introduction-to-Literarature-and-Literary-Studies-week-Prelim-coverage.pptx
What if we spent less time fighting change, and more time building what’s rig...
A systematic review of self-coping strategies used by university students to ...
The Lost Whites of Pakistan by Jahanzaib Mughal.pdf

Lecture 2, c++(complete reference,herbet sheidt)chapter-12

  • 1. Lecture-2Chapter-12 Abu Saleh Musa Miah M.Sc. Engg(On going) University of Rajshahi Lecturer Rajshahi Engineering Science and Technology college.
  • 2. Friend class Example: It is possible for one class to be a friend of another class. When this is the case, the friend class and all of its member functions have access to the private members defined within the other class. include <iostream> using namespace std; class TwoValues { int a; Int b; public: TwoValues(int i, int j) { a = i; b = j; } friend class Min; }; class Min { public: int min(TwoValues x); }; int min(TwoValues x) { return x.a < x.b ? x.a : x.b; } int main() { TwoValues ob(10, 20); Min m; cout << m.min(ob); return 0; }
  • 3. Inline function: There is an important feature in C++, called an inline function, that is commonly used with classes. you can create short functions that are not actually called; rather, their code is expanded in line at the point of each invocation. This process is similar to using a function-like macro. To cause a function to be expanded in line rather than called,precede its definition with the inline keyword. inline void myclass::show() { cout << a << " " << b << "n"; } int main() { myclass x; x.init(10, 20); x.show(); return 0; #include <iostream> using namespace std; class myclass { int a, b; public: void init(int i, int j); void show(); }; // Create an inline function. inline void myclass::init(int i, int j) { a = i; b = j;
  • 4. Parameterized Constructor: It is possible to pass arguments to constructor functions. Typically, these arguments help initialize an object when it is created. To create a parameterized constructor, simply add parameters to it the way you would to any other function. When you define the constructor's body, use the parameters to initialize the object. int main() { myclass ob(3, 5); ob.show(); return 0; } #include <iostream> using namespace std; class myclass { int a, b; public: myclass(int i, int j) {a=i; b=j;} void show() {cout << a << " " << b;} };
  • 5. Static Class Member: Both function and data members of a class can be made static. This section explains the consequences of each.
  • 6. Static data member: When you precede a member variable's declaration with static, you are telling the compiler that only one copy of that variable will exist and that all objects of the class will share that variable All static variables are initialized to zero before the first object int shared::a; // define a void shared::show() { cout << "This is static a: " << a; cout << "nThis is non-static b: " << b; cout << "n"; } #include <iostream> using namespace std; class shared { static int a; int b; public: void set(int i, int j) {a=i; b=j;} void show(); } ;
  • 7. Static data member: static a: 1 non-static b: 1 static a: 2 non-static b: 2 static a: 2 non-static b: 1 int main() { shared x, y; x.set(1, 1); // set a to 1 x.show(); y.set(2, 2); // change a to 2 y.show(); x.show(); /* Here, a has been changed for both x and y because a is shared by both objects. */ return 0; }
  • 8. Static member function:Member functions may also be declared as static. There are several restrictions placed on static member functions. They may only directly refer to other static members of the class. int main() { cl ob1, ob2; if(cl::get_resource()) cout << "ob1 has resourcen"; if(!cl::get_resource()) cout << "ob2 denied resourcen"; ob1.free_resource(); if(ob2.get_resource()) cout << "ob2 can now use resourcen"; return 0; } #include <iostream> using namespace std; class cl { static int resource; public: static int get_resourc (); void free_resource() { resource = 0; } }; int cl::resource; // define resource int cl::get_resource() { if(resource) return 0; else { resource = 1; return 1; } }
  • 9. WhenConstructoranddestructorareExecution: As a general rule, an object's constructor is called when the object comes into existence, and an object's destructor is called when the object is destroyed. Precisely when these events occur is discussed here. int main() { myclass local_ob1(3); cout << "This will not be first line displayed.n"; myclass local_ob2(4); return 0; } It displays this output: Initializing 1 Initializing 2 Initializing 3 This will not be first line displayed. Initializing 4 #include <iostream> using namespace std; class myclass { public: int who; myclass(int id); ~myclass(); } glob_ob1(1), glob_ob2(2); myclass::myclass(int id) { cout << "Initializing " << id << "n"; who = id; } myclass::~myclass() { cout << "Destructing " << who
  • 10. The scope resolution operator: The :: operator links a class name with a member name in order to tell the compiler what class the member belongs to. However, the scope resolution operator has another related use: it can allow access to a name in an enclosing scope that is "hidden" by a local declaration of the same name. int main() { myclass local_ob1(3); cout << "This will not be first line displayed.n"; myclass local_ob2(4); return 0; } It displays this output: Initializing 1 Initializing 2 Initializing 3 This will not be first line displayed. Initializing 4 #include <iostream> using namespace std; class myclass { public: int who; myclass(int id); ~myclass(); } glob_ob1(1), glob_ob2(2); myclass::myclass(int id) { cout << "Initializing " << id << "n"; who = id; } myclass::~myclass() {
  • 11. The scope resolution operator: The :: operator links a class name with a member name in order to tell the compiler  what class the member belongs to.  the scope resolution operator has another related use: it can allow access to a name in an enclosing scope that is "hidden" by a local declaration of the same name.
  • 12. Nested class  It is possible to define one class within another.  Doing so creates a nested class.  Since a class declaration does, in fact, define a scope, a nested class is valid only within the scope of the enclosing class.  Frankly, nested classes are seldom used.
  • 13. Nested classMember functions may also be declared as static. There are several restrictions placed on static member functions. They may only directly refer to other static members of the class. void f() { class myclass { int i; public: void put_i(int n) { i=n; } int get_i() { return i; } } ob; ob.put_i(10); cout << ob.get_i(); } #include <iostream> using namespace std; void f(); int main() { f(); // myclass not known here return 0; }
  • 14. Passing object to function Objects may be passed to functions in just the same way that any other type of variable can. Objects are passed to functions through the use of the standard call-by value mechanism. This means that a copy of an object is made when it is passed to a function. myclass::myclass(int n) { i = n; cout << "Constructing " << i << "n"; } myclass::~myclass() { cout << "Destroying " << i << "n"; } class myclass { int i; public: myclass(int n); ~myclass(); void set_i(int n) { i=n; } int get_i() { return i; } };