Professional Documents
Culture Documents
Object Oriented Programmi NG Language
Object Oriented Programmi NG Language
Object Oriented Programmi NG Language
GRAMMING L ANGUAGE .
OBJECT ORIENTED PRO
ABOUT C++ AND WHY C++
C++ WAS DEVELOPED BY BJARNE STROUSTRUP IN BELL LABORATORY.
IT IS BASED ON OOPS. THIS IS NOT PURE OBJECT ORIENTED .
IT IS ADVANCE VERSION OF C AND FIRST TIME IT STANDARISE 1998 BY ISO ANCI C/C99.
C++ IS KNOWN TO BE A VERY POWERFUL LANGUAGE.
C++ ALLOWS YOU TO HAVE A LOT OF CONTROL AS TO HOW YOU USE COMPUTER RESOURCES, SO IN THE RIGHT HANDS, ITS SPEED
AND ABILITY TO CHEAPLY USE RESOURCES SHOULD BE ABLE TO SURPASS OTHER LANGUAGES.
AS A STATICALLY TYPED LANGUAGE, C++ IS GENERALLY MORE PERFORMANT THAN DYNAMICALLY TYPED
LANGUAGES BECAUSE THE CODE IS TYPE-CHECKED BEFORE IT IS EXECUTED.
Q: WHAT IS C++ GOOD AT?
• C++ EXCELS IN SITUATIONS WHERE HIGH PERFORMANCE AND PRECISE CONTROL OVER MEMORY AND OTHER RESOURCES IS NEEDED. HERE ARE A FEW
COMMON TYPES OF APPLICATIONS THAT MOST LIKELY WOULD BE WRITTEN IN C++:
• VIDEO GAMES
• REAL-TIME SYSTEMS (E.G. FOR TRANSPORTATION, MANUFACTURING, ETC…)
• HIGH-PERFORMANCE FINANCIAL APPLICATIONS (E.G. HIGH FREQUENCY TRADING)
• GRAPHICAL APPLICATIONS AND SIMULATIONS
• PRODUCTIVITY / OFFICE APPLICATIONS
• EMBEDDED SOFTWARE
• AUDIO AND VIDEO PROCESSING
• ARTIFICIAL INTELLIGENCE AND NEURAL NETWORKS
HOW DOES THE PROGRAM COMPILE AND TEST?
OBJECT ORIENTED PROGRAMMING LANGUAGE
BASICS OF TYPICS C++ ENVIRONMENT
What are Preprocessor Directives ?
The preprocessors are the directives, which give instructions to the compiler to preprocess the information before
actual compilation starts.
All preprocessor directives begin with #, and only white-space characters may appear before a preprocessor
directive on a line.
Preprocessor directives are not C++ statements, so they do not end in a semicolon (;).
You already have seen a #include directive in all the examples. This macro is used to include a header file into
the source file.
There are number of preprocessor directives supported by C++ like #include, #define, #if, #else, #line, etc. Let us
see important directives
Types of Pre-Processor :
#define : #define PI 3.146
#define : #define <iostream>
#define MIN(a,b) (((a)<(b)) ? a : b)
#ifdef DEBUG
cerr <<”Variable x = “ << x << endl;
#endif
Header Files :
Header files contain definitions of Functions and Variables, which
is imported or used into any C++ program by using the pre-
processor #include statement. Header file have an extension “.h”
which contains C++ function declaration and macro definition.
HEADER FILE
WHAT ARE NAMESPACES ?
• A NAMESPACE IS DESIGNED TO OVERCOME THIS DIFFICULTY AND IS USED AS ADDITIONAL
INFORMATION TO DIFFERENTIATE SIMILAR FUNCTIONS, CLASSES, VARIABLES ETC. WITH THE SAME
NAME AVAILABLE IN DIFFERENT LIBRARIES. USING NAMESPACE, YOU CAN DEFINE THE CONTEXT IN
WHICH NAMES ARE DEFINED
• SAME SITUATION CAN ARISE IN YOUR C++ APPLICATIONS. FOR EXAMPLE, YOU MIGHT BE WRITING
SOME CODE THAT HAS A FUNCTION CALLED XYZ() AND THERE IS ANOTHER LIBRARY AVAILABLE
WHICH IS ALSO HAVING SAME FUNCTION XYZ(). NOW THE COMPILER HAS NO WAY OF KNOWING
WHICH VERSION OF XYZ() FUNCTION YOU ARE REFERRING TO WITHIN YOUR CODE.
USING NAMESPACE
DIFFERENT VERSION OF C++
WHAT ARE MACROS ? & PRE DEFINED C++ MACOS
A MACRO IS A FRAGMENT OF CODE WHICH HAS BEEN GIVEN A NAME. WHENEVER THE NAME
IS USED, IT IS REPLACED BY THE CONTENTS OF THE MACRO.
OOPS
• ACCESS MODIFIERS:
• C++ USES THE THREE MODIFIERS CALLED PUBLIC , PROTECTED , AND
PRIVATE
CONTROLLING ACCESS TO CLASS:
POLYMORPHISM
OPERATOR OVERLOADING IN C++
• CLASS BOX {
PUBLIC:
DOUBLE LENGTH; // LENGTH OF A BOX
DOUBLE BREADTH; // BREADTH OF A BOX
DOUBLE HEIGHT; // HEIGHT OF A BOX
DOUBLE GETVOLUME(VOID);// RETURNS BOX VOLUME
};
• MEMBER FUNCTIONS CAN BE DEFINED WITHIN THE CLASS DEFINITION OR SEPARATELY USING SCOPE
RESOLUTION OPERATOR, ::. DEFINING A MEMBER FUNCTION WITHIN THE CLASS DEFINITION DECLARES
THE FUNCTION INLINE, EVEN IF YOU DO NOT USE THE INLINE SPECIFIER. SO EITHER YOU CAN
DEFINE GETVOLUME() FUNCTION AS BELOW:
• CLASS BOX {
PUBLIC:
DOUBLE LENGTH; // LENGTH OF A BOX
DOUBLE BREADTH; // BREADTH OF A BOX
DOUBLE HEIGHT; // HEIGHT OF A BOX
DOUBLE GETVOLUME(VOID) {
RETURN LENGTH * BREADTH * HEIGHT;
}
};
DEFINE SAME FUNCTION OUTSIDE THE CLASS
USING SCOPE RESOLUTION OPERATOR, :: AS
FOLLOWS:
•DOUBLE BOX::GETVOLUME(VOID) {
RETURN LENGTH * BREADTH * HEIGHT;
}