Use of ‘const’ for function parameters

const is pointless when the argument is passed by value since you will not be modifying the caller’s object. Wrong. It’s about self-documenting your code and your assumptions. If your code has many people working on it and your functions are non-trivial then you should mark const any and everything that you can. When writing … Read more

Initializing a static std::map in C++

Using C++11: #include <map> using namespace std; map<int, char> m = {{1, ‘a’}, {3, ‘b’}, {5, ‘c’}, {7, ‘d’}}; Using Boost.Assign: #include <map> #include “boost/assign.hpp” using namespace std; using namespace boost::assign; map<int, char> m = map_list_of (1, ‘a’) (3, ‘b’) (5, ‘c’) (7, ‘d’);

When to use extern in C++

This comes in useful when you have global variables. You declare the existence of global variables in a header, so that each source file that includes the header knows about it, but you only need to “define” it once in one of your source files. To clarify, using extern int x; tells the compiler that … Read more

C++ multiline string literal

Well … Sort of. The easiest is to just use the fact that adjacent string literals are concatenated by the compiler: const char *text = “This text is pretty long, but will be ” “concatenated into just a single string. ” “The disadvantage is that you have to quote ” “each part, and newlines must … Read more

What is an unsigned char?

In C++, there are three distinct character types: char signed char unsigned char If you are using character types for text, use the unqualified char: it is the type of character literals like ‘a’ or ‘0’ (in C++ only, in C their type is int) it is the type that makes up C strings like … Read more