Shivangi Srivastava

Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 15

A presentation on​

Mini Project Title​


C++
Presented by
Shivangi Srivastava         1901200100106
Under the guidance of
Dr. Shachi Mall (Associate Professor)
Mrs. Aaisha Khatun (Assistant Professor)
Dept. Of Computer Science and Engineering
Institute of Technology and Management, Gida, Gorakhpur
Date – 15-12-2021

Dr. A.P.J. Abdul Kalam Technical University, Uttar Pradesh, Lucknow


Contents
• Why C++?
• C vs. C++
• Design goals of C++
• Programming paradigm
• What is object-oriented?
• A simple C++ program
• Data types
• Memory allocation
• The big four
• C++ functions mechanisms
• Constant variable
• Exceptions
Why C++?
• Popular and relevant (used in nearly every application domain):
– end-user applications (Word, Excel, PowerPoint, Photoshop, Acrobat,
Quicken, games)
– operating systems (Windows 9x, NT, XP; IBM’s K42; some Apple OS X)
– large-scale web servers/apps (Amazon, Google)
– central database control (Israel’s census bureau; Amadeus; Morgan-
Stanley financial modeling)
– communications (Alcatel; Nokia; 800 telephone numbers; major
transmission nodes in Germany and France)
– numerical computation / graphics (Maya)
– device drivers under real-time constraints
• Stable, compatible, scalable
C vs. C++
• C++ is C incremented
(orig., “C with classes”)
• C++ is more expressive
(fewer C++ source lines needed than C source lines for same program)
• C++ is just as permissive
(anything you can do in C can also be done in C++)
• C++ can be just as efficient
(most C++ expressions need no run-time support;
C++ allows you to
– manipulate bits directly and interface with hardware without regard for safety
or ease of comprehension, BUT
– hide these details behind a safe, clean, elegant interface)
• C++ is more maintainable
(1000 lines of code – even brute force, spaghetti code will work;
100,000 lines of code – need good structure, or new errors will be
introduced as quickly as old errors are removed)
Design goals of C++
• Backward compatibility with C
(almost completely – every program in K&R is a C++ program –
but additional keywords can cause problems)
• Simplicity, elegance
(few built-in data types, e.g., no matrices)
• Support for user-defined data types
(act like built-in types; N.B. Standard Template Library (STL))
• No compromise in efficiency, run-time or memory
(unless “advanced features” used)
• Compilation analysis to prevent accidental corruption
of data
(type-checking and data hiding)
• Support object-oriented style of programming
Programming paradigms
• procedural – implement algorithms via
functions (variables, functions, etc.)
• modular – partition program into modules
(separate compilation)
• object-oriented – divide problem into classes
(data hiding, inheritance)
• abstract – separate interface from
implementation (abstract classes)
• generic – manipulate arbitrary data types
(STL: containers, algorithms)
What is object-oriented?
• Encapsulation
“black box” – internal data hidden

• Inheritance © SDC

related classes share implementation


and/or interface
• Polymorphism
ability to use a class without knowing its type
“C++ is an object-oriented language” =
C++ provides mechanisms that support object-oriented style of
programming
A simple C++ program
#include <iostream> // std::cout
#include <cstdio> // printf

int main()
{
int a = 5; // 'a' is L-value
float b = 0.9f;
printf("Hello world %d %3.1f \n", a, b);
std::cout << "Hello world" << a << " "
<< b << " " << std::endl;
return 0;
}
Data types
• bool (true  1, false  0)
INTEGRAL • char (could be signed or unsigned
– implementation-defined)
• int (signed by default)
ARITHMETIC • double
• void (“pseudo-type”)
• enum
USER-DEFINED • class
• also short, long, struct, float,
wchar_t, etc.)

Do not rely on sizes of these!


(Implementation-dependent)
Memory allocation
• “on the stack”
– block delimited by {}
– object alive till it falls out of scope
– calls constructor / destructor
• “on the heap”
– new and delete replace malloc, calloc, free
– object exists independently of scope in which it was created
– also “on the free store” or “allocated in dynamic memory”
– be careful: new  delete, new[]  delete[]
– for safety, same object should both allocate and deallocate
• “local static store”
void foo() {
static int i=0;
}
The big four
• By default, each class has four methods:
– constructor Date();
– destructor ~Date();
– copy constructor
Date(const Date& other);
– assignment operator
Date& operator=(const Date& other);
• These call the appropriate functions on each
member variable
• Be careful: If this is not what you want, then
either override or disallow (by making private)
C++ function mechanisms
• Overloaded function names
– Cleaner and safer
print(int);
print(float);
– But beware
print(int); print(int*); print(0);
• Default parameters
void print(int a, int b=0, int c=0);
• Operator overloading
Matrix& operator+=(const Matrix& other);
• Implicit conversion operator
operator int() const {} // converts to int
– Provides convenient syntax, but potentially dangerous so use
sparingly
Constant Variable
• Const prevents object from being modified (orig., readonly)
• Avoid magic numbers
char a[128];
const int maxn = 128;
char a[maxn];
• Logical constness vs. physical constness
• Const is your friend; use it extensively and consistently
• can cast away constness, but be sure to use mutable
• const pointers:
– const int * const ptr = &a[0]; // const ptr to a const int
– int const * const ptr = &a[0]; // ”
– int * const p2 = &a[0]; // const ptr to an int
– const int * p1 = &a[0]; // ptr to a const int
– int const * p2 = &a[0]; // ”
Exceptions
• Error handling in C++:
– try-catch blocks safer
– separate “real code” from error handling code
void Func() {
try {
OpenDevice();
SetParams();
} catch (const MyException& e) {
e.ReportToUser();
} catch (...) {
abort(1);
}
}

void OpenDevice()
{
if (bad) throw MyException(“Cannot open device”);
}
THANK YOU

You might also like