In large-scale software projects, short and elegant names for types and functions are problematic because they can cause a name conflict, i.e., the same name is used more than once to define distinct types. In order to avoid this, people tend to use various affixes in their code, thus making their code harder to manage and edit. This is tedious and error-prone:
class string { //Short but dangerous. Someone else may have picked //this name already... //...};class excelSoftCompany_string { //now safer but very tedious to //repeat this name. Quite a nightmare //if company changes its name... //...}
For that purpose, C++ supports namespaces. Namespaces allow you to use convenient, short, intelligible names safely. Instead of repeating the cumbersome affixes time and time again in each declaration/definition, you can group your classes/functions in a namespace and factor out the