
| Artefact | Convention | ||||||||||||
| Function name | foo_bar_baz | ||||||||||||
| Class name | foo_bar_baz | ||||||||||||
| Object/variable name | fooBarBaz prefixFooBarBaz
|
||||||||||||
| Enumeration name | foo_bar_baz_e | ||||||||||||
| Enumerator name | FooBarBaz | ||||||||||||
| Template parameter | FooBarBaz | ||||||||||||
| Macro | FOO_BAR_BAZ |
#include <iostream>
#include <string>
#include <vector>
enum grade_e
{
A, B, C, D, E, F
};
class student
{
private:
typedef std::vector<grade_e> grades;
public:
student(const std::string& aName) : iName(aName) {}
public:
const std::string& name() const { return iName; }
void add_grade(grade_e aGrade)
{
iGrades.push_back(aGrade);
}
grade_e average_grade() const
{
if (iGrades.empty())
return F;
int total = 0;
for (grades::const_iterator i = iGrades.begin(); i != iGrades.end(); ++i)
total += *i;
return static_cast<grade_e>(total / iGrades.size());
}
private:
const std::string iName;
grades iGrades;
};
int main()
{
student s("Mr Flibble");
s.add_grade(A);
s.add_grade(B);
s.add_grade(C);
s.add_grade(D);
s.add_grade(E);
std::cout << s.name() << "'s average grade is " << static_cast<char>(s.average_grade() + 'A') << std::endl;
}
