Skip to content

C++ Naming

```c++ // MyClass.h

pragma once

include

namespace myProjectNamespace::MyProjectSubnamespace { class MyClass { public: // Single line comment. enum class MyEnum { firstEnumValue, secondEnumValue };

/* This is a multi-line comment.
   It is useful to write a comment on multiple lines! */
MyClass() = default;
explicit MyClass(int singleParameter);
MyClass(int firstParameter, std::string_view secondParameter);

static constexpr int myConstant{5};
static constexpr float myFloatConstant{1.0f};

// myMember getter.
int myMember() const;
// myMember setter.
void setMyMember(int myMember);
// method that does something!
void doSomething();

protected: // Usually empty (don't write the keyword if it's empty).

private: int m_myMember{0}; }; } // namespace myProjectNamespace::MyProjectSubnamespace

```

Source

```c++ // MyClass.cpp // Class header <- Do not add this comment in real code

include "MyClass.h"

// C system headers <- Do not add this comment in real code

include "stdlib.h"

/ STL headers. <- Do not add this comment in real code All of these should be used in this file, but as it is a sample file, it is not the case. /

include

include

include

include

// Other libraries headers <- Do not add this comment in real code

include

include

// Your project headers <- Do not add this comment in real code

include "MyOtherClass.h"

namespace MyProjectNamespace::MyProjectSubnamespace {

MyClass::MyClass(int singleParameter) : m_myMember(singleParameter) { }

MyClass::MyClass(int firstParameter, std::string_view secondParameter) : m_myMember(firstParameter) { const std::size_t size{secondParameter.size()}; m_myMember += size; }

int MyClass::myMember() const { return m_myMember; }

void MyClass::setMyMember(int myMember) { if(myMember != m_myMember) { // check is not necessary for basic types m_myMember = myMember; } }

void MyClass::doSomething() { // Nothing to do if(m_myMember == myConstant) { return; }

MyOtherClass myOtherClass{};

if(m_myMember < 0) {
    myOtherClass.doSomething();
    return;
}

switch(m_myMember) {
case 0: {
    myOtherClass.doSomethingElse(0);
    break;
}
case 1:
case 2:
case 3: {
    myOtherClass.doSomethingElse(myConstant);
    break;
}
// TODO(AROSS): That's how you write a TODO!
default:
    myOtherClass.doSomethingElse(m_myMember);
    break;
}

}

} // namespace myProjectNamespace::MyProjectSubnamespace ```