0% found this document useful (0 votes)
35 views

Introduction To C++: CS-2303 System Programming Concepts

This document introduces C++ and provides an overview of key topics for an introductory C++ course. It discusses that C++ is an extension of C that adds classes, templates, inheritance, and other features. It provides a simple C++ example program and discusses input/output streams, header files, and references in C++. Reading materials and header files needed for assignments are also listed.
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
35 views

Introduction To C++: CS-2303 System Programming Concepts

This document introduces C++ and provides an overview of key topics for an introductory C++ course. It discusses that C++ is an extension of C that adds classes, templates, inheritance, and other features. It provides a simple C++ example program and discusses input/output streams, header files, and references in C++. Reading materials and header files needed for assignments are also listed.
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 25

Introduction to C++

CS-2303
System Programming Concepts
(Slides include materials from The C Programming Language, 2nd edition, by Kernighan and Ritchie and
from C: How to Program, 5th and 6th editions, by Deitel and Deitel)

Slides (shamelessly) borrowed from Prof. Knicki

CS-2303, C-Term 2010 Introduction to C++ 1


Reading

• Deitel & Deitel, 5th edition — Chapter 18


• Deitel & Deitel, 6th edition — Chapter 15

• For reference:–
– Bjarne Stroustrup, The C++ Programming
Language: Special Edition
– Nicolai M. Josuttis, The C++ Standard
Library: A Tutorial and Reference

CS-2303, C-Term 2010 Introduction to C++ 2


An Older Edition of Stroustrup’s Book

Stroustrup 3rd edition

CS-2303, C-Term 2010 Introduction to C++ 3


What Is C++?
• (Mostly) an extension of C to include:–
– Classes
– Templates
– Inheritance and Multiple Inheritance
– Function and Operator Overloading
– New (and better) Standard Library
– References and Reference Parameters
– Default Arguments Note: Objective C was invented
– Inline Functions at about the same time, with
– … similar goals.
• A few small syntactic differences from C
CS-2303, C-Term 2010 Introduction to C++ 4
Compiling C++

• Use gcc, Visual Studio, etc.

• File types
.cc, .cp, .cpp, .CPP, .cxx, .c++, .C
.h, .H Some of these have special properties.

CS-2303, C-Term 2010 Introduction to C++ 5


In this Topic

• Syntax differences between C and C++


• A Simple C++ Example
• C++ Input/Output
• C++ Libraries
• C++ Header Files
• References and Reference Parameters
• Call by Reference in C++

CS-2303, C-Term 2010 Introduction to C++ 6


Background

• C++ was developed by Bjarne Stroustrup at


Bell Laboratories
– Originally called “C with classes”
– The name C++ is based on C’s increment
operator (++)
• Indicating that C++ is an enhanced version of C

• Widely used in many applications and fields


• Well-suited to “Programming in the Large”
CS-2303, C-Term 2010 Introduction to C++ 8
A Simple C++ Example — D&D Figure 18.1
// C++ simple example C++ style comments
#include <iostream> //for C++ Input and Output
int main ()
{ standard output stream object
int number3; stream insertion operator

std::cout << "Enter a number:";


std::cin >> number3;
stream extraction operator
int number2, sum; standard input stream object

std::cout << "Enter another number:";


std::cin >> number2;

sum = number2 + number3;


std::cout << "Sum is: " << sum <<std::endl;
stream manipulator
return 0;
} Concatenating insertion operators
CS-2303, C-Term 2010 Introduction to C++ 9
A Simple C++ Program
• <iostream>
– Must be included for any program that outputs data to
the screen or inputs data from the keyboard using C++
style stream input/output.
– Replaces <stdio.h> of C

• C++ requires you to specify the return type,


possibly void, for all functions.
– Specifying a parameter list with empty parentheses is
equivalent to specifying a void parameter list in C.

CS-2303, C-Term 2010 Introduction to C++ 10


Notes on Simple C++ Program

• Stream manipulator std::endl


– Outputs a newline.
– Flushes the output buffer
Note: std::ends flushes the buffer
but does not add newline.

• The notation std::cout specifies a name


(cout ) that belongs to the namespace std.
Namespace: a generalization of scope.
C++ allows access to multiple namespaces
with the ' :: ' operator
CS-2303, C-Term 2010 Introduction to C++ 11
§18.5 Header Files

• C++ Standard Library header files


– Each contains a portion of the Standard Library.
• Function prototypes for the related functions
• Definitions of various class types and functions
• Constants needed by those functions
– “Instruct” the compiler on how to interface with library
and user-written components.
– Header file names ending in .h
• Are “old-style” header files
• Superseded by the C++ Standard Library header files
– Use #include directive to include class in a program.
CS-2303, C-Term 2010 Introduction to C++ 12
Fig. 18.2 C++ Standard Library header files
C++ Standard
Library header Explanation
files
<iostream> Contains function prototypes for the C++ standard input and
standard output functions. This header file replaces header file
<iostream.h>. This header is discussed in detail in
Chapter 26, Stream Input/Output.
<iomanip> Contains function prototypes for stream manipulators that format
streams of data. This header file replaces header file
<iomanip.h>. This header is used in Chapter 26, Stream
Input/Output.
<cmath> Contains function prototypes for math library functions. This
header file replaces header file <math.h>.
<cstdlib> Contains function prototypes for conversions of numbers to text,
Continues for
text to numbers, memory allocation, random numbers and various three pages!
other utility functions. This header file replaces header file
<stdlib>.
<ctime> Contains function prototypes and types for manipulating the time
and date. This header file replaces header file <time.h>.
<vector>, These header files contain classes that implement the C++
<list> Standard Library containers. Containers store data during a
<deque>, program’s execution.
<queue>,
<stack>,
<map>,
<set>,
<bitset>

CS-2303, C-Term 2010 Introduction to C++ 13


Needed for Lab #4
• <iostream>
• cin and cout for stream input and output

• <cmath>
• sqrt()

CS-2303, C-Term 2010 Introduction to C++ 14


Keywords Shared with C

C++ keywords

Keywords common to the C and C++ programming languages


auto break case char const
continue default do double else
enum extern float for goto
if int long register return
short signed sizeof static struct
switch typedef union unsigned void
volatile while

Figure 18.4 in D&D

CS-2303, C-Term 2010 Introduction to C++ 18


New Keywords in C++

C++ keywords

C++-only keywords

and and_eq asm bitand bitor


bool catch class compl const_cast
delete dynamic_cast explicit export false
friend inline mutable namespace new
not not_eq operator or or_eq
private protected public reinterpret_cast static_cast
template this throw true try
typeid typename using virtual wchar_t
xor xor_eq

Figure 18.4 in D&D

CS-2303, C-Term 2010 Introduction to C++ 19


References in C++

• Definition Reference:– An Alternative Name


for an Object

BIG difference from Java

• References are only created in declarations


and parameters
• A reference can only appear where the
object itself could have appeared
CS-2303, C-Term 2010 Introduction to C++ 21
Simple References
void f() {
int j = 1;
int &r = j; //r and j refer to same int
int x = r; // x now is 1

r = 2; // j now is 2
} //f Sometimes, reference
declarations are written as
int k; int& r1 = k

int &r1 = k; // okay: r1 is initialized


int &r2; // error; initializer missing
extern int &r3; //okay; r3 defined
elsewhere
CS-2303, C-Term 2010 Introduction to C++ 22
Simple References (continued)
void g() { ss
d d r e
int ii = 0; ry a C .
un a r om
int &rr = ii; he r f
' is t ht ove
rr++; // ii s '
now & is 1oug
Th i r b r
rat o
The op e
s
ut r e '*'// pp now points to ii
int *pp = b&rr;
ath
} //g er d and '
Note: This declaresecl a pointer
& exactly as in C,
ara ' are
and initializes it with thetion address
not of rr
(which is another name for quaii) op
lifie erat
r s. o rs

CS-2303, C-Term 2010 Introduction to C++ 23


Example Usage of a Reference
int grid[1000];
int rowSize, x, y;
...
int &element = grid[x*rowSize+y];
...
/* computations on integer named
element */

CS-2303, C-Term 2010 Introduction to C++ 24


Reference Parameters

• An alias for its corresponding argument in a


function call.
– & placed after the parameter type in the function
prototype and function header
• Example
– int &count in a function header
• Pronounced as “count is a reference to an int”
• Parameter name in the called function body
actually refers to the original variable in the
calling function.
CS-2303, C-Term 2010 Introduction to C++ 25
Reference Parameter Example
• C version
void swap (int *a, int *b) {
int temp = *a;
*a = *b; Hazard: a NULL pointer
*b = temp;
} // void swap(…)

• C++ version
void swap (int &a, int &b) {
int temp = a;
a = b; Non-hazard: no pointer here
b = temp;
} // void swap(…)

CS-2303, C-Term 2010 Introduction to C++ 26


Notes on References and Pointers

• Pointers in C do multiple duty


– Links, as in linked lists and trees
– Parameters, where the function needs to return
a value to an argument provided by the caller
– Short-hand, a short way of referring to an
object that otherwise would need a complex
expression
–…

CS-2303, C-Term 2010 Introduction to C++ 27


Java vs. C++ References

• In Java, a reference is a data type.


• It can be assigned to, compared, copied, stored, etc.
• Same reference can refer to different objects at
different times during execution
• In C++, a reference is an alias for an object
• It cannot be assigned to; assignment is through the
reference to the underlying object
– Similar to dereferencing a pointer in C
• A reference always refers to the same object for the
duration of its scope
CS-2303, C-Term 2010 Introduction to C++ 28
Repeat Three Times

A reference is not a pointer, …

A reference is not a pointer, …

A reference is not a pointer, …

And neither of them resembles a


Java reference
CS-2303, C-Term 2010 Introduction to C++ 29
Questions?

CS-2303, C-Term 2010 Introduction to C++ 30

You might also like