What are the differences between wrapping related methods as static in an abstract non instantiating class versus using a namespace naming convention?
Class Wrapper
Utility.h
#pragma once
class Utility : final {
public:
Utility() = delete;
static functionDeclaration();
};
Utility.cpp
#include "Utility.h"
Utility::functionDefinition() {
}
Using Namespace
Utility.h
#pragma once
namespace util {
functionDeclaration();
} // namespace util
Utility.cpp
#include "Utility.h"
// Namespace method 1:
using namespace util;
functionDefinition() {
}
// Namespace method 2:
util::functionDefinition() {
}
// Namespace method 3:
namespace util {
functionDefinition() {
}
} // namespace util
Are there any trade offs, advantages, disadvantages between the two? How does the compiler threat these differently?