Browse Source

Finished final draft of C to C++ tutorial blog post.

pull/4/head
jrtechs 6 years ago
parent
commit
59da1a77f8
1 changed files with 47 additions and 47 deletions
  1. +47
    -47
      entries/programming/c-to-c++-tutorial.md

+ 47
- 47
entries/programming/c-to-c++-tutorial.md View File

@ -1,12 +1,13 @@
This post aims to cover all the major topics that C programmers need to know before This post aims to cover all the major topics that C programmers need to know before
they start writing C++ programs. I kept this post as short and concise as possible to they start writing C++ programs. I kept this post as short and concise as possible to
enable people to use this as a quick reference to jump into C++. This post assumes
that you have prior knowledge of both C and object oriented programming concepts.
enable people to use this as a quick reference to quickly jump into C++. This post assumes
that you have prior knowledge of both C and object oriented-programming concepts. Each topic
is quickly covered in a code snippet and some additional explanation is provided if necessary.
## Input/Output ## Input/Output
Input and output in C++ is pretty easy, you just use "cout" and "cin". When printing with
"cout", you separate what your printing with "<<", the "endl" at the end prints a new line.
Input and output in C++ is easy, you use "cout" and "cin". When printing with
"cout", you separate what your printing with "<<"; "endl" prints a new line.
```c++ ```c++
using namespace std; //namespaces talked about below using namespace std; //namespaces talked about below
@ -17,7 +18,7 @@ int main()
cout << "Hello World" << endl; // HELLO WORLD! cout << "Hello World" << endl; // HELLO WORLD!
int a; int a;
cin >> a; //inputs an int into a
cin >> a; //inputs an int into a -- notice how arrows face the direction of IO
cout << "You entered: " << a << endl; //prints what you entered cout << "You entered: " << a << endl; //prints what you entered
@ -26,9 +27,9 @@ int main()
``` ```
If you wish to run a C++ program simply save it with the extension ".cpp", you then
Save your C++ programs with the extension ".cpp", you then
can compile and run it with g++. Compiling a C++ program with g++ is nearly the same can compile and run it with g++. Compiling a C++ program with g++ is nearly the same
as compiling a C program with gcc.
as compiling a C program with GCC.
ex: ex:
@ -42,8 +43,8 @@ g++ helloWorld.cpp -o hello
Name spaces are used to enable you to have multiple functions/methods called the Name spaces are used to enable you to have multiple functions/methods called the
same thing and not conflict with one another. You use "namespacename::function/variable" same thing and not conflict with one another. You use "namespacename::function/variable"
to access something inside of a namespace. To prevent you from always having to type
"namespacename::", you can use a namespace which makes that namespace "default".
to access something inside of a specific namespace. To prevent you from always having to type
"namespacename::", you can use a namespace which makes that namespace default.
```c++ ```c++
using namespace std; //tells compiler we want to use std namespace using namespace std; //tells compiler we want to use std namespace
@ -91,7 +92,7 @@ int main()
## Global Variable ## Global Variable
Similar to C, however, you can now reference a global variable with the "::"
Global variables are similar to C, however, you can now reference a global members with the "::"
accessor. accessor.
```c++ ```c++
@ -113,7 +114,7 @@ int main ()
## Multiple Names for a Variable/Aliasing ## Multiple Names for a Variable/Aliasing
This is simply NOT a pointer. In the following example pi, and x now are treated as
This is NOT simply a pointer. In the following example pi, and x now are treated as
the same exact variable. You cannot later change the pointer destination for x. the same exact variable. You cannot later change the pointer destination for x.
@ -129,16 +130,15 @@ cout << "pi: " << pi << " x: " << x << endl; // prints pi: 2.1 x: 2.1
## Passing Variables by Reference ## Passing Variables by Reference
In C, everything was passed by value -- only way to get around this was by passing
pointers. C++ now allows us to pass variables by reference. This is very powerful, in
In C, everything was passed by value; C++ allows us to pass variables by reference. This is very powerful, in
languages like Java, only Objects are passed by reference. C++ lets you decide exactly languages like Java, only Objects are passed by reference. C++ lets you decide exactly
what gets passed by reference or by value.
what gets passed by reference or by value -- even primitives.
```c++ ```c++
using namespace std; using namespace std;
#include <iostream> #include <iostream>
void change (int &r, int s) //r is passed by reference
void change (int &r, int s) //& infront of variable means that it will get passed by reference
{ {
r = 100; r = 100;
s = 200; s = 200;
@ -169,7 +169,7 @@ int main()
{ {
int x = 1; int x = 1;
int y = 2; int y = 2;
printf("%d, %d", x, y); //printf doesn't exist in c++.
printf("%d, %d", x, y);
change(&x, y); change(&x, y);
printf("%d, %d", x, y); printf("%d, %d", x, y);
@ -178,9 +178,9 @@ int main()
``` ```
## Functions Returning Variables not Values
## Functions Returning Variables References
A function can return a variable -- not a value. In the following example, a function
A function can return a value reference which can be treated as a variable. In the following example, a function
returns the reference to the variable which is the smallest. returns the reference to the variable which is the smallest.
```c++ ```c++
@ -211,11 +211,11 @@ int main ()
``` ```
## Inline -- similar to Macros
## Inline
Inline can be used to replace a function which contains very simple logic -- no Inline can be used to replace a function which contains very simple logic -- no
for loops, etc. Like a macro, this will be inserted everywhere the code is used; a for loops, etc. Like a macro, this will be inserted everywhere the code is used; a
draw back to inline methods is that the compiled source will be larger. But, they
drawback to inline methods is that the compiled source will be larger. But, they
typically run faster. typically run faster.
```c++ ```c++
@ -240,7 +240,7 @@ int main()
## Exceptions ## Exceptions
Exceptions might help you stop segmentation faulting. The important thing to notice Exceptions might help you stop segmentation faulting. The important thing to notice
is that you can throw just about any type in a try block.
is that you can throw about any type in a try block.
```c++ ```c++
int x; int x;
@ -269,7 +269,7 @@ This is exactly like default parameters in Python. If a function is called witho
the parameter, it is assumed to be that value. the parameter, it is assumed to be that value.
```c++ ```c++
double multiply(double x, double y = 5)
double multiply(double x, double y = 5) // y has the default value of 5
{ {
return x * y; return x * y;
} }
@ -439,9 +439,9 @@ struct pair
The syntax of a class is similar to a struct. The syntax of a class is similar to a struct.
```c++ ```c++
class Pair
class Pair
{ {
public:
public: // encapsulation covered in 2 sections
int i; int i;
int x; int x;
@ -454,9 +454,9 @@ public:
## Class Constructor and De-constructor ## Class Constructor and De-constructor
Class constructors are similar to constructors in java. Class de-constructors
Class constructors are similar to constructors in Java. Class destructor
are simply the name of the class with a "~" sign in front of it. It is important to are simply the name of the class with a "~" sign in front of it. It is important to
free any allocated memory in the class deconstruct.
free any allocated memory in the class deconstruct since C++ does not have a garbage collector.
```c++ ```c++
class Pair class Pair
@ -558,9 +558,9 @@ private:
## Class Inheritance ## Class Inheritance
Classes can inherit variables and methods from other classes. The major thing to
remember is that if you ever want to override a method in a child class, you have
to declare the method as "virtual".
Classes can inherit variables and methods from other classes. The most important thing to
remember is that if you ever want to override a method in a child class, you must
declare the method as "virtual".
```c++ ```c++
class Pair class Pair
@ -588,7 +588,7 @@ protected:
int z; int z;
public: public:
Triple(int i1, int i2, int i3): Pair(i1, i2) //calls the parent classes constructor
Triple(int i1, int i2, int i3): Pair(i1, i2) //calls the parent's constructor
{ {
z = i3; z = i3;
} }
@ -600,9 +600,9 @@ public:
}; };
``` ```
## "Abstract" Classes
## Abstract Classes
Abstract classes are simply classes which can not be instantiated. To do this in C++
Abstract classes are simply classes which cannot be instantiated. To do this in C++
you simply set a virtual function equal to zero. you simply set a virtual function equal to zero.
```c++ ```c++
@ -625,8 +625,8 @@ public:
## Method Prototypes for Classes ## Method Prototypes for Classes
If you wish to have a method prototype in a class, you have to use namespace
syntax to define it elsewhere. This is particularly useful for breaking a class
If you wish to use a method prototype in a class, you must use namespace
syntax to define the method elsewhere. This is particularly useful for breaking classes
into multiple files. It is common to declare the class in a header file and then into multiple files. It is common to declare the class in a header file and then
implement the functions in a cpp file. implement the functions in a cpp file.
@ -657,7 +657,7 @@ int Cat::fly()
## Strings ## Strings
Since C++ has classes, it can now work with strings in a more pleasant way.
Since C++ has classes, you can work with strings in a pleasant way.
```c++ ```c++
using namespace std; using namespace std;
@ -671,10 +671,10 @@ int main()
string str1Copy(str1); // string "Hello" string str1Copy(str1); // string "Hello"
//initalizes string by a character and number of occurances
//initializes string by a character and number of occurrences
string str4(5, '$'); // string "$$$$$$" string str4(5, '$'); // string "$$$$$$"
//string contatination
//string concatenation
string greeting = str1 + " " + str2; string greeting = str1 + " " + str2;
cout << greeting << endl; cout << greeting << endl;
@ -695,9 +695,9 @@ int main()
//returns last character in string //returns last character in string
char back = numbers.back(); char back = numbers.back();
//gets character at a certain position
//gets a character at a certain position
char second = numbers.at(1); char second = numbers.at(1);
char secondAlt = numbers[1];
char secondAlt = numbers[1]; //array syntax still works on strings
cout << "first: " << first << endl; cout << "first: " << first << endl;
cout << "back: " << back << endl; cout << "back: " << back << endl;
@ -705,7 +705,7 @@ int main()
//substr(a, b) function returns a substring of b length //substr(a, b) function returns a substring of b length
//starting from index a. if there is no second argument, it
//starting from index a. If there is no second argument, it
//goes to the end. //goes to the end.
cout << numbers.substr(2, 7) << endl; cout << numbers.substr(2, 7) << endl;
@ -722,10 +722,10 @@ int main()
# File IO # File IO
File IO is significantly different in C++. I will quickly glance over
a few examples which should give you most of what you need to start writing some programs.
File IO is significantly different from C. I will quickly glance over
a few examples which should give you most of what you need to start writing basic programs.
## Reading From File
## Reading from File
Reading a file example by character. Reading a file example by character.
@ -733,7 +733,7 @@ Reading a file example by character.
using namespace std; using namespace std;
#include <iostream> #include <iostream>
#include <fstream> // Header for files
#include <fstream> // header for files
int main() int main()
{ {
@ -763,7 +763,7 @@ int main ()
{ {
string line; string line;
ifstream myfile ("example.txt"); ifstream myfile ("example.txt");
if(myfile.is_open()) //checks to see if file open sucessfully
if(myfile.is_open()) //checks to see if file open successfully
{ {
while(getline(myfile,line)) //gets contents of file and puts them in a string while(getline(myfile,line)) //gets contents of file and puts them in a string
{ {
@ -808,10 +808,10 @@ int main()
## Resources ## Resources
You should now know enough C++ to start developing with it. If you want to take your C++
You now know enough C++ to start programming with it. If you want to take your
skills to the next level, I would recommend start working on a few projects in C++ and get skills to the next level, I would recommend start working on a few projects in C++ and get
a comprehensive C++ book. a comprehensive C++ book.
- [Online C++ Guide](https://www.programiz.com/cpp-programming) - [Online C++ Guide](https://www.programiz.com/cpp-programming)
- Kochan: Programming in C _p4 (4th Edition) (Developer's Library) 4th Edition -- Really good book if you don't know C that good.
- Kochan: Programming in C _p4 (4th Edition) (Developer's Library) 4th Edition -- Really good book if you don't know C yet.
- [Tutorials Point C++](https://www.tutorialspoint.com/cplusplus/index.htm) - [Tutorials Point C++](https://www.tutorialspoint.com/cplusplus/index.htm)

Loading…
Cancel
Save