Following table lists down seven basic C++ data types: Several of the basic types can be modified using one or more of these type modifiers:... 14 The following table shows the variable
Trang 2i
starting in 1979 at Bell Labs C++ runs on a variety of platforms, such as
Windows, Mac OS, and the various versions of UNIX
This tutorial adopts a simple and practical approach to describe the concepts of
C++
Audience
This tutorial has been prepared for the beginners to help them understand the
basic to advanced concepts related to C++
Prerequisites
Before you start practicing with various types of examples given in this
tutorial,we are making an assumption that you are already aware of the basics
of computer program and computer programming language
Copyright & Disclaimer
All the content and graphics published in this e-book are the property of
Tutorials Point (I) Pvt Ltd The user of this e-book is prohibited to reuse, retain,
copy, distribute or republish any contents or a part of contents of this e-book in
any manner without written consent of the publisher
We strive to update the contents of our website and tutorials as timely and as
precisely as possible, however, the contents may contain inaccuracies or errors
Tutorials Point (I) Pvt Ltd provides no guarantee regarding the accuracy,
timeliness or completeness of our website or its contents including this tutorial
If you discover any errors on our website or in this tutorial, please notify us at
Trang 3ii
Table of Contents i
1 OVERVIEW 1
Object-Oriented Programming 1
Standard Libraries 1
The ANSI Standard 1
Learning C++ 2
Use of C++ 2
2 ENVIORNMENT SETUP 3
Try it Option Online 3
Local Environment Setup 3
Installing GNU C/C++ Compiler: 4
3 BASIC SYNTAX 6
C++ Program Structure: 6
Compile & Execute C++ Program: 7
Semicolons & Blocks in C++ 7
C++ Identifiers 8
C++ Keywords 8
Trigraphs 9
Whitespace in C++ 10
4 COMMENTS IN C++ 11
5 DATA TYPES 13
Primitive Built-in Types 13
typedef Declarations 15
Trang 4iii
Variable Definition in C++ 17
Variable Declaration in C++ 18
Lvalues and Rvalues 20
7 VARIABLE SCOPE 21
Local Variables 21
Global Variables 22
Initializing Local and Global Variables 23
8 CONSTANTS/LITERALS 24
Integer Literals 24
Floating-point Literals 24
Boolean Literals 25
Character Literals 25
String Literals 26
Defining Constants 27
9 MODIFIER TYPES 29
Type Qualifiers in C++ 30
10 STORAGE CLASSES 31
The auto Storage Class 31
The register Storage Class 31
The static Storage Class 31
The extern Storage Class 33
The mutable Storage Class 34
11 OPERATORS 35
Trang 5iv
Relational Operators 37
Logical Operators 40
Bitwise Operators 41
Assignment Operators 44
Misc Operators 47
Operators Precedence in C++ 48
12 LOOP TYPES 51
While Loop 52
for Loop 54
do…while Loop 56
nested Loops 58
Loop Control Statements 60
Break Statement 61
continue Statement 63
goto Statement 65
The Infinite Loop 67
13 DECISION-MAKING STATEMENTS 69
If Statement 70
if…else Statement 72
if else if else Statement 73
Switch Statement 75
Nested if Statement 78
The ? : Operator 81
14 FUNCTIONS 82
Defining a Function 82
Trang 6v
Function Arguments 85
Call by Value 86
Call by Pointer 87
Call by Reference 89
Default Values for Parameters 90
15 NUMBERS 93
Defining Numbers in C++ 93
Math Operations in C++ 94
Random Numbers in C++ 96
16 ARRAYS 98
Declaring Arrays 98
Initializing Arrays 98
Accessing Array Elements 99
Arrays in C++ 100
Pointer to an Array 103
Passing Arrays to Functions 105
Return Array from Functions 107
17 STRINGS 111
The C-Style Character String 111
The String Class in C++ 114
18 POINTERS 116
What are Pointers? 116
Using Pointers in C++ 117
Pointers in C++ 118
Trang 7vi
Pointer Arithmetic 120
Pointers vs Arrays 124
Array of Pointers 126
Pointer to a Pointer 128
Passing Pointers to Functions 130
Return Pointer from Functions 132
19 REFERENCES 135
References vs Pointers 135
Creating References in C++ 135
References as Parameters 137
Reference as Return Value 138
20 DATE AND TIME 141
Current Date and Time 142
Format Time using struct tm 143
21 BASIC INPUT/OUTPUT 145
I/O Library Header Files 145
The Standard Output Stream (cout) 145
The Standard Input Stream (cin) 146
The Standard Error Stream (cerr) 147
The Standard Log Stream (clog) 148
22 DATA STRUCTURES 149
Defining a Structure 149
Accessing Structure Members 150
Trang 8vii
The typedef Keyword 155
23 CLASSES AND OBJECTS 157
C++ Class Definitions 157
Define C++ Objects 157
Accessing the Data Members 158
Classes & Objects in Detail 159
Class Access Modifiers 163
The public Members 164
The private Members 165
The protected Members 167
Constructor & Destructor 169
Parameterized Constructor 170
The Class Destructor 173
Copy Constructor 174
Friend Functions 179
Inline Functions 181
this Pointer 182
Pointer to C++ Classes 184
Static Members of a Class 185
Static Function Members 187
24 INHERITANCE 190
Base & Derived Classes 190
Access Control and Inheritance 192
Trang 9viii
Multiple Inheritance 193
25 OVERLOADING (OPERATOR & FUNCTION) 196
Function Overloading in C++ 196
Operators Overloading in C++ 197
Overloadable/Non-overloadable Operators 200
Operator Overloading Examples 201
Unary Operators Overloading 201
Increment (++) and Decrement (- -) Operators 203
Binary Operators Overloading 205
Relational Operators Overloading 208
Input/Output Operators Overloading 210
++ and - - Operators Overloading 212
Assignment Operators Overloading 214
Function Call () Operator Overloading 215
Subscripting [ ] Operator Overloading 217
Class Member Access Operator - > Overloading 219
26 POLYMORPHISM 223
Virtual Function 226
Pure Virtual Functions 226
27 DATA ABSTRACTION 227
Access Labels Enforce Abstraction 228
Benefits of Data Abstraction 228
Data Abstraction Example 228
Designing Strategy 230
28 DATA ENCAPSULATION 231
Trang 10ix
29 INTERFACES 234
Abstract Class Example 234
Designing Strategy 236
30 FILES AND STREAMS 238
Opening a File 238
Closing a File 239
Writing to a File 239
Reading from a File 239
Read & Write Example 240
File Position Pointers 242
31 EXCEPTION HANDLING 243
Throwing Exceptions 244
Catching Exceptions 244
C++ Standard Exceptions 246
Define New Exceptions 247
32 DYNAMIC MEMORY 249
The new and delete Operators 249
Dynamic Memory Allocation for Arrays 251
Dynamic Memory Allocation for Objects 251
33 NAMESPACES 253
Defining a Namespace 253
The using directive 254
Trang 11x
Nested Namespaces 256
34 TEMPLATES 258
Function Template 258
Class Template 259
35 PREPROCESSOR 263
The #define Preprocessor 263
Function-Like Macros 264
Conditional Compilation 264
The # and # # Operators 266
Predefined C++ Macros 268
36 SIGNAL HANDLING 270
The signal() Function 270
The raise() Function 272
37 MULTITHREADING 274
Creating Threads 274
Terminating Threads 275
Passing Arguments to Threads 277
Joining and Detaching Threads 278
38 WEB PROGRAMMING 282
What is CGI? 282
Web Browsing 282
CGI Architecture Diagram 282
Web Server Configuration 283
First CGI Program 284
Trang 12xi
CGI Environment Variables 285
C++ CGI Library 289
GET and POST Methods 289
Passing Information Using GET Method 289
Simple URL Example: Get Method 290
Simple FORM Example: GET Method 291
Passing Information Using POST Method 292
Passing Checkbox Data to CGI Program 292
Passing Radio Button Data to CGI Program 294
Passing Text Area Data to CGI Program 296
Passing Dropdown Box Data to CGI Program 298
Using Cookies in CGI 299
How It Works 299
Setting up Cookies 300
Retrieving Cookies 301
File Upload Example 303
39 STL TUTORIAL 306
40 STANDARD LIBRARY 309
The Standard Function Library 309
The Object Oriented Class Library 309
Trang 131
C++ is a statically typed, compiled, general-purpose, case-sensitive, free-form programming language that supports procedural, object-oriented, and generic programming
both high-level and low-level language features
C++ was developed by Bjarne Stroustrup starting in 1979 at Bell Labs in Murray Hill, New Jersey, as an enhancement to the C language and originally named C with Classes but later it was renamed C++ in 1983
C++ is a superset of C, and that virtually any legal C program is a legal C++ program
Note:A programming language is said to use static typing when type checking
is performed during compile-time as opposed to run-time
Standard C++ consists of three important parts:
types and literals, etc
strings, etc
manipulating data structures, etc
The ANSI Standard
The ANSI standard is an attempt to ensure that C++ is portable; that code you write for Microsoft's compiler will compile without errors, using a compiler on a Mac, UNIX, a Windows box, or an Alpha
1 OVERVIEW
Trang 142
The ANSI standard has been stable for a while, and all the major C++ compiler
manufacturers support the ANSI standard
Learning C++
The most important thing while learning C++ is to focus on concepts
The purpose of learning a programming language is to become a better
programmer; that is, to become more effective at designing and implementing
new systems and at maintaining old ones
C++ supports a variety of programming styles You can write in the style of
Fortran, C, Smalltalk, etc., in any language Each style can achieve its aims
effectively while maintaining runtime and space efficiency
Use of C++
C++ is used by hundreds of thousands of programmers in essentially every
application domain
C++ is being highly used to write device drivers and other software that rely on
direct manipulation of hardware under real-time constraints
C++ is widely used for teaching and research because it is clean enough for
successful teaching of basic concepts
Anyone who has used either an Apple Macintosh or a PC running Windows has
indirectly used C++ because the primary user interfaces of these systems are
written in C++
Trang 153
Try it Option Online
You really do not need to set up your own environment to start learning C++ programming language Reason is very simple, we have already set up C++ Programming environment online, so that you can compile and execute all the available examples online at the same time when you are doing your theory work This gives you confidence in what you are reading and to check the result with different options Feel free to modify any example and execute it online
website code sections at the top right corner that will take you to the online compiler So just make use of it and enjoy your learning
Local Environment Setup
If you are still willing to set up your environment for C++, you need to have the following two softwares on your computer
The files you create with your editor are called source files and for C++ they typically are named with the extension cpp, cp, or c
A text editor should be in place to start your C++ programming
2 ENVIORNMENT SETUP
Trang 164
C++ Compiler:
This is an actual C++ compiler, which will be used to compile your source code
into final executable program
Most C++ compilers don't care what extension you give to your source code, but
if you don't specify otherwise, many will use cpp by default
Most frequently used and free available compiler is GNU C/C++ compiler,
otherwise you can have compilers either from HP or Solaris if you have the
respective Operating Systems
Installing GNU C/C++ Compiler:
UNIX/Linux Installation:
system by entering the following command from the command line:
$ g++ -v
If you have installed GCC, then it should print a message such as the following:
Using built-in specs
Target: i386-redhat-linux
Configured with: /configure prefix=/usr
Thread model: posix
gcc version 4.1.2 20080704 (Red Hat 4.1.2-46)
If GCC is not installed, then you will have to install it yourself using the detailed
Mac OS X Installation:
If you use Mac OS X, the easiest way to obtain GCC is to download the Xcode
development environment from Apple's website and follow the simple installation
instructions
Windows Installation:
To install GCC at Windows you need to install MinGW To install MinGW, go to
download page Download the latest version of the MinGW installation program
which should be named MinGW-<version>.exe
While installing MinGW, at a minimum, you must install gcc-core, gcc-g++,
binutils, and the MinGW runtime, but you may wish to install more
Trang 175
variable so that you can specify these tools on the command line by their simple names
When the installation is complete, you will be able to run gcc, g++, ar, ranlib, dlltool, and several other GNU tools from the Windows command line
Trang 186
When we consider a C++ program, it can be defined as a collection of objects
that communicate via invoking each other's methods Let us now briefly look
into what a class, object, methods, and instant variables mean
color, name, breed as well as behaviors - wagging, barking, and eating
An object is an instance of a class
behaviors/states that object of its type support
methods It is in methods where the logics are written, data is
manipulated and all the actions are executed
An object's state is created by the values assigned to these instant
Let us look at the various parts of the above program:
1 The C++ language defines several headers, which contain information
that is either necessary or useful to your program For this program, the
namespace Namespaces are a relatively recent addition to C++
Trang 197
single-line comment available in C++ Single-line comments begin with // and stop at the end of the line
message "This is my first C++ program" to be displayed on the screen
the value 0 to the calling process
Compile & Execute C++ Program:
Let's look at how to save the file, compile and run the program Please follow the steps given below:
1 Open a text editor and add the code as above
2 Save the file as: hello.cpp
3 Open a command prompt and go to the directory where you saved the file
4 Type 'g++ hello.cpp' and press enter to compile your code If there are no errors in your code the command prompt will take you to the next line and would generate a.out executable file
5 Now, type 'a.out' to run your program
6 You will be able to see ' Hello World ' printed on the window
You can compile C/C++ programs using makefile For more details, you can
Semicolons & Blocks in C++
In C++, the semicolon is a statement terminator That is, each individual statement must be ended with a semicolon It indicates the end of one logical entity
For example, following are three different statements:
x = y;
y = y+1;
Trang 208
add(x, y);
A block is a set of logically connected statements that are surrounded by
opening and closing braces For example:
{
cout << "Hello World"; // prints Hello World
return 0;
}
C++ does not recognize the end of the line as a terminator For this reason, it
does not matter where you put a statement in a line For example:
A C++ identifier is a name used to identify a variable, function, class, module, or
any other user-defined item An identifier starts with a letter A to Z or a to z or
an underscore (_) followed by zero or more letters, underscores, and digits (0 to
9)
C++ does not allow punctuation characters such as @, $, and % within
Here are some examples of acceptable identifiers:
mohd zara abc move_name a_123
myname50 _temp j a23b9 retVal
C++ Keywords
The following list shows the reserved words in C++ These reserved words may
not be used as constant or variable or any other identifier names
Trang 219
Trigraphs
A few characters have an alternative representation, called a trigraph sequence
A trigraph is a three-character sequence that represents a single character and the sequence always starts with two question marks
Trigraphs are expanded anywhere they appear, including within string literals and character literals, in comments, and in preprocessor directives
Following are most frequently used trigraph sequences:
Trang 22All the compilers do not support trigraphs and they are not advised to be used
because of their confusing nature
Whitespace in C++
A line containing only whitespace, possibly with a comment, is known as a blank
line, and C++ compiler totally ignores it
Whitespace is the term used in C++ to describe blanks, tabs, newline characters
and comments Whitespace separates one part of a statement from another and
enables the compiler to identify where one element in a statement, such as int,
ends and the next element begins Statement 1:
int age;
In the above statement there must be at least one whitespace character (usually
a space) between int and age for the compiler to be able to distinguish them
Statement 2:
fruit = apples + oranges; // Get the total fruit
In the above statement 2, no whitespace characters are necessary between fruit
and =, or between = and apples, although you are free to include some if you
wish for readability purpose
Trang 2311
Program comments are explanatory statements that you can include in the C++ code These comments help anyone reading the source code All programming languages allow for some form of comments
C++ supports single-line and multi-line comments All characters available inside any comment are ignored by C++ compiler
C++ comments start with /* and end with */ For example:
/* This is a comment */
/* C++ comments can also
* span multiple lines
When the above code is compiled, it will ignore // prints Hello World and final
executable will produce the following result:
Hello World
Within a /* and */ comment, // characters have no special meaning Within a // comment, /* and */ have no special meaning Thus, you can "nest" one kind of comment within the other kind For example:
/* Comment out printing of Hello World:
4 COMMENTS IN C++
Trang 2412
cout << "Hello World"; // prints Hello World
*/
Trang 25Primitive Built-in Types
C++ offers the programmer a rich assortment of built-in as well as user defined data types Following table lists down seven basic C++ data types:
Several of the basic types can be modified using one or more of these type modifiers:
Trang 2614
The following table shows the variable type, how much memory it takes to store
the value in memory, and what is maximum and minimum value which can be
stored in such type of variables
The size of variables might be different from those shown in the above table,
depending on the compiler and the computer you are using
Trang 27cout << "Size of char : " << sizeof(char) << endl;
cout << "Size of int : " << sizeof(int) << endl;
cout << "Size of short int : " << sizeof(short int) << endl;
cout << "Size of long int : " << sizeof(long int) << endl;
cout << "Size of float : " << sizeof(float) << endl;
cout << "Size of double : " << sizeof(double) << endl;
cout << "Size of wchar_t : " << sizeof(wchar_t) << endl;
return 0;
}
<< operator is being used to pass multiple values out to the screen We are also
When the above code is compiled and executed, it produces the following result which can vary from machine to machine:
Size of char : 1
Size of int : 4
Size of short int : 2
Size of long int : 4
Size of float : 4
Size of double : 8
Size of wchar_t : 4
typedef Declarations
simple syntax to define a new type using typedef:
typedef type newname;
For example, the following tells the compiler that feet is another name for int:
Trang 2816
typedef int feet;
Now, the following declaration is perfectly legal and creates an integer variable
called distance:
feet distance;
Enumerated Types
An enumerated type declares an optional type name and a set of zero or more
identifiers that can be used as values of the type Each enumerator is a constant
whose type is the enumeration
form of an enumeration type is:
enum enum-name { list of names } var-list;
Here, the enum-name is the enumeration's type name The list of names is
comma separated
For example, the following code defines an enumeration of colors called colors
and the variable c of type color Finally, c is assigned the value "blue"
enum color { red, green, blue } c;
c = blue;
By default, the value of the first name is 0, the second name has the value 1,
and the third has the value 2, and so on But you can give a name, a specific
enum color { red, green=5, blue };
the one that precedes it
Trang 29There are following basic types of variable in C++ as explained in last chapter:
type
C++ also allows to define various other types of variables, which we will cover in
structures,andClasses
Following section will cover how to define, declare and use various types of variables
Trang 3018
type variable_list;
one or more identifier names separated by commas Some valid declarations are
instructs the compiler to create variables named i, j and k of type int
Variables can be initialized (assigned an initial value) in their declaration The
initializer consists of an equal sign followed by a constant expression as follows:
type variable_name = value;
Some examples are:
extern int d = 3, f = 5; // declaration of d and f
int d = 3, f = 5; // definition and initializing d and f
byte z = 22; // definition and initializes z
char x = 'x'; // the variable x has the value 'x'
For definition without an initializer: variables with static storage duration are
implicitly initialized with NULL (all bytes have the value 0); the initial value of all
other variables is undefined
Variable Declaration in C++
A variable declaration provides assurance to the compiler that there is one
variable existing with the given type and name so that compiler proceed for
further compilation without needing complete detail about the variable A
variable declaration has its meaning at the time of compilation only, compiler
needs actual variable declaration at the time of linking of the program
A variable declaration is useful when you are using multiple files and you define
your variable in one of the files which will be available at the time of linking of
Though you can declare a variable multiple times in your C++ program, but it
can be defined only once in a file, a function or a block of code
Example:
Trang 3220
Same concept applies on function declaration where you provide a function
name at the time of its declaration and its actual definition can be given
anywhere else For example:
Lvalues and Rvalues
There are two kinds of expressions in C++:
expression An lvalue may appear as either the left-hand or right-hand
side of an assignment
address in memory An rvalue is an expression that cannot have a value
assigned to it which means an rvalue may appear on the right- but not
left-hand side of an assignment
Variables are lvalues and so may appear on the left-hand side of an assignment
Numeric literals are rvalues and so may not be assigned and cannot appear on
the left-hand side Following is a valid statement:
Trang 3321
A scope is a region of the program and broadly speaking there are three places, where variables can be declared:
We will learn what a function is, and it's parameter in subsequent chapters Here let us explain what local and global variables are
Local Variables
Variables that are declared inside a function or block are local variables They can be used only by statements that are inside that function or block of code Local variables are not known to functions outside their own Following is the example using local variables:
Trang 3422
Global Variables
Global variables are defined outside of all the functions, usually on top of the
program The global variables will hold their value throughout the life-time of
your program
A global variable can be accessed by any function That is, a global variable is
available for use throughout your entire program after its declaration Following
is the example using global and local variables:
A program can have same name for local and global variables but value of local
variable inside a function will take preference For example:
Trang 35Initializing Local and Global Variables
When a local variable is defined, it is not initialized by the system, you must initialize it yourself Global variables are initialized automatically by the system when you define them as follows:
Trang 3624
Constants refer to fixed values that the program may not alter and they are
Constants can be of any of the basic data types and can be divided into Integer
Numerals, Floating-Point Numerals, Characters, Strings and Boolean Values
Again, constants are treated just like regular variables except that their values
cannot be modified after their definition
Integer Literals
An integer literal can be a decimal, octal, or hexadecimal constant A prefix
specifies the base or radix: 0x or 0X for hexadecimal, 0 for octal, and nothing for
decimal
An integer literal can also have a suffix that is a combination of U and L, for
unsigned and long, respectively The suffix can be uppercase or lowercase and
can be in any order
Here are some examples of integer literals:
212 // Legal
215u // Legal
0xFeeL // Legal
078 // Illegal: 8 is not an octal digit
032UU // Illegal: cannot repeat a suffix
Following are other examples of various types of Integer literals:
A floating-point literal has an integer part, a decimal point, a fractional part, and
an exponent part You can represent floating point literals either in decimal form
or exponential form
Trang 3725
While representing using decimal form, you must include the decimal point, the exponent, or both and while representing using exponential form, you must include the integer part, the fractional part, or both The signed exponent is introduced by e or E
Here are some examples of floating-point literals:
3.14159 // Legal
314159E-5L // Legal
510E // Illegal: incomplete exponent
210f // Illegal: no decimal or exponent
.e55 // Illegal: missing integer or fraction
Boolean Literals
There are two Boolean literals and they are part of standard C++ keywords:
You should not consider the value of true equal to 1 and value of false equal to
0
Character Literals
Character literals are enclosed in single quotes If the literal begins with L (uppercase only), it is a wide character literal (e.g., L'x') and should be stored
inwchar_ttype of variable Otherwise, it is a narrow character literal (e.g., 'x')
A character literal can be a plain character (e.g., 'x'), an escape sequence (e.g., '\t'), or a universal character (e.g., '\u02C0')
There are certain characters in C++ when they are preceded by a backslash they will have special meaning and they are used to represent like newline (\n)
or tab (\t) Here, you have a list of some of such escape sequence codes:
Escape sequence Meaning
Trang 38Following is the example to show a few escape sequence characters:
String literals are enclosed in double quotes A string contains characters that
are similar to character literals: plain characters, escape sequences, and
universal characters
Trang 39There are two simple ways in C++ to define constants:
The #define Preprocessor
Following is the form to use #define preprocessor to define a constant:
#define identifier value
Following example explains it in detail:
Trang 40The const Keyword
const type variable = value;
Following example explains it in detail:
#include <iostream>
using namespace std;
int main()
{
const int LENGTH = 10;
const int WIDTH = 5;
const char NEWLINE = '\n';