Address @levibostian's concerns for #800

This commit is contained in:
Matt Kline 2014-10-17 18:42:30 -07:00
parent fbf3c6d588
commit 03d1bc5ed9

View File

@ -7,12 +7,14 @@ contributors:
lang: en lang: en
--- ---
C++ was designed as a systems programming language that C++ is a systems programming language that,
[according to its inventor Bjarne Stroustrup](http://channel9.msdn.com/Events/Lang-NEXT/Lang-NEXT-2014/Keynote),
was designed to
- is a "better C" - be a "better C"
- supports data abstraction - support data abstraction
- supports object-oriented programming - support object-oriented programming
- supports generic programming - support generic programming
Though its syntax can be more difficult or complex than newer languages, Though its syntax can be more difficult or complex than newer languages,
it is widely used because it compiles to native instructions that can be it is widely used because it compiles to native instructions that can be
@ -32,9 +34,21 @@ one of the most widely-used programming languages.
// A main() function in C++ should return an int, // A main() function in C++ should return an int,
// though void main() is accepted by most compilers (gcc, clang, etc.) // though void main() is accepted by most compilers (gcc, clang, etc.)
int main() // or int main(int argc, char** argv) // This value serves as the program's exit status.
// See http://en.wikipedia.org/wiki/Exit_status for more information.
int main(int argc, char** argv)
{ {
return 0; // Can also end without return statement // Command line arguments are passed in by argc and argv in the same way
// they are in C.
// argc indicates the number of arguments,
// and argv is an array of C-style strings (char*)
// representing the arguments.
// The first argument is the name by which the program was called.
// argc and argv can be omitted if you do not care about arguments,
// giving the function signature of int main()
// An exit status of 0 indicates success.
return 0;
} }
// In C++, character literals are one byte. // In C++, character literals are one byte.
@ -82,21 +96,33 @@ void print(int myInt)
int main() int main()
{ {
printing("Hello"); // Resolves to void print(const char*) print("Hello"); // Resolves to void print(const char*)
printing(15); // Resolves to void print(int) print(15); // Resolves to void print(int)
} }
///////////////////////////// /////////////////////////////
// Default function arguments // Default function arguments
///////////////////////////// /////////////////////////////
void two_ints(int a = 1, int b = 4); // You can provide default arguments for a function
// if they are not provided by the caller.
void doSomethingWithInts(int a = 1, int b = 4)
{
// Do something with the ints here
}
int main() int main()
{ {
two_ints(); // a = 1, b = 4 doSomethingWithInts(); // a = 1, b = 4
two_ints(20); // a = 20, b = 4 doSomethingWithInts(20); // a = 20, b = 4
two_ints(20, 5); // a = 20, b = 5 doSomethingWithInts(20, 5); // a = 20, b = 5
}
// Default arguments must be at the end of the arguments list.
void invalidDeclaration(int a = 1, int b) // Error!
{
} }
@ -106,7 +132,7 @@ int main()
// Namespaces provide separate scopes for variable, function, // Namespaces provide separate scopes for variable, function,
// and other declarations. // and other declarations.
// Namespaces can be nested // Namespaces can be nested.
namespace First { namespace First {
namespace Nested { namespace Nested {