Простой ответ: имена классов, как правило, заглавные в c ++ (за исключением классов std), методы - в нижнем регистре, некоторые фреймворки, такие как Qt, предпочитают camelCase, однако я предпочитаю underscore_notation - как и STL, см., Например."auto_ptr".
Классы не всегда имеют отдельные файлы .h
, потому что здесь файл .java
разделен на заголовок .h
(для всего пакета) и файлы реализации .cpp
по одному на класс.
class TipicalCamelCase {
public:
/// mark the frequently used small functions inline in the class def.
inline int getMyAge() const;
void setMyAge(int myAge=5); // defaults go to the definition.
/// for efficiently setting more complex things.
void setMyStuff(const MyStuff& myStuff);
/// a tipical class-valued getter
/// (sometimes scoffed at since it can have memory leaks
/// if you dismiss the class but still use and don't copy MyStuff.)
const MyStuff& getMyStuff() const;
/// a safe getter, but forces copying-out MyStuff.
MyStuff getMyStuff() const;
private:
int myAge;
static const int zero=0; // allowed only in the new C++11 standard.
static const int one;
};
Некоторые реализации / инициализации (обычно в отдельном файле TipicalCamelCase.cpp
):
const int TipicalCamelCase::one = 1;
int TipicalCamelCase::getMyAge() const{
return myAge;
}
void TipicalCamelCase::setMyAge(int myAge_){
myAge = myAge_;
}
Стиль подчеркивания такой же, но
int Tipical_camel_case::get_my_age() const
{
return my_age;
}
Я предпочитаю это, так как он выглядит чище как в заголовке, так и в файлах реализации.Вы можете видеть, что заголовки функций длиннее, чем в Java.Особенно вы увидите, что для templates
(generics) заголовок из 2 строк является типичным, поэтому стоит поместить их немного более разделенными.
template<typename _Tp>
int Class_name::general_function(_Tp);
Я думаю, что это должно быть введением стиля.Если вы используете наследование, для работы в стиле java отметьте все функции, кроме конструкторов virtual
, чтобы @overrides работали правильно.