Первое, что я действительно не хотел публиковать на этом обмене кода стека, потому что это действительно небольшой объем кода, написанный примерно за 5 минут.Написание классов - хорошая практика
Я хочу спросить вас, допустим ли класс (мой первый в C++), который я написал. У меня на самом деле не было много кода C++, поэтому я не могу сравнивать это ни с чем.
Но я видел некоторые классы, реализующие только объявления функций, внутренняя часть этих функций была написана где-то еще в коде.
Я прошу вас о любых предложениях, если что-то не так. И почему они делают, как я описал в параграфе выше? Какой стиль кодирования лучше?
class File {
private:
FILE *_handler;
char *_path;
long _size;
void setHandler(char *mode)
{
this->_handler = fopen(this->_path, mode);
}
public:
File(char *path)
{
this->_path = path;
}
size_t read()
{
this->setHandler("r");
char *buffer = (char*) malloc(sizeof(char)*this->_size);
return fread(buffer, 1, this->_size, this->_handler);
}
void write(char *data)
{
this->setHandler("w");
fputs(data, this->_handler);
}
long size()
{
if(! sizeof(this->_size) > 0)
{
fseek(this->_handler, 0, SEEK_END);
this->_size = ftell(this->_handler);
rewind(this->_handler);
}
return this->_size;
}
}; // End File
Попробуйте его на codeReview: http://codereview.stackexchange.com/?as=1 – Sam
* «И почему они делают, как я описал в параграфе выше?» * Что вы имеете в виду, это разделение интерфейса и реализация. См. Здесь, почему это хорошая идея: http://stackoverflow.com/questions/333889/in-c-why-have-header-files-and-cpp-files – JBentley
Один комментарий у меня есть, не так много о классе дизайн, заключается в том, что вы смешиваете код C с кодом C++. Такие вещи, как 'char *', 'fread',' fputs' и т. Д., Должны быть заменены их эквивалентами на C++. – JBentley