Reputation: 1864
I was inspired by the comments under this question.
I didn't see any reason why a class with only static functions would be a better design than a namespace (with just functions). Any list of pros and cons of these two approaches are welcomed. It would be great with some practical examples!
Upvotes: 7
Views: 4291
Reputation: 15804
Classes with static methods
Namespaces
- you can create namespace aliases
namespace io = boost::iostreams;
Well, you can typedef
classes, so this is moot point.
you can import symbols to another namespaces.
namespace mystuff
{
using namespace boost;
}
you can import selected symbols.
using std::string;
they can span over several files (very important advantage)
inline namespaces (C++11)
Bottom line: namespaces are way to go in C++.
Upvotes: 3
Reputation: 234374
One non-stylistic difference is that you can use a class as a template parameter, but you cannot use a namespace. This is sometimes used for policy classes, like std::char_traits
.
Outside of that use case, I would stick to a namespace with regular functions.
Upvotes: 11