Lucida Console не так хорош, потому что полужирный текст поднимает больше комнаты, чем неполужирный текст. Consolas преодолевает это.
Нет правила, которому вы должны следовать (как в java). Вы можете размещать и называть классы в файлах с любым именем (кроме суффикса).
Однако другой вопрос, если это хорошая практика (это не так!).
Да, можно. Это легко проверить.
class C
{
};
class D
{
};
int main(int argc, char**argv)
{
return 0;
}
Нет проблем с записью нескольких классов в один файл. Это только вопрос стиля обслуживания.
Обычно вы должны помещать несколько классов в один файл, только если ...
Классы очень тесно связаны. Например, если класс определяет свой собственный итератор, то было бы целесообразно поместить этот класс итератора в тот же файл, что и класс, который он использовал для итерации.
Один из классов предназначен для публичного использования, а остальные классы используются для его реализации. Например, это применимо, если вы используете идиому «pimpl», где единственный член, который содержит открытый класс, является указателем на частный класс. В этом случае может оказаться целесообразным поместить частные / скрытые классы в исходный файл, соответствующий общедоступному классу, который их использует.
В обоих случаях решение о том, следует ли помещать «общедоступный помощник» (например, итератор) и «частный помощник» (например, pimpl) классы в том же исходном файле или другом исходном файле должны быть созданы один раз для всего проекта и выполняться последовательно.
Просто масштабируемость / проблемы с ремонтопригодностью;) Здесь нет строгих правил.
Нет. Вы не столкнетесь с неприятностями. В C ++ вы можете определить несколько классов внутри одного файла.
Да, можно. Это должно поддерживаться, потому что в противном случае вы не сможете создавать вложенные классы.
class outside
{
public:
class nested
{
public:
static int x;
static int y;
int f();
int g();
};
};
У вас не возникнет проблем с определением нескольких классов в одном файле.
Это не очень хорошая практика для производственных систем, но это не проблема для домашнего задания
Вы можете легко объявить и определить несколько классов в одном файле.
Вы должны быть осторожны, когда класс зависит от другого, который появится позже. Если класс A должен быть членом другого класса B, компилятору необходимо его полное объявление (чтобы он знал его размер), и вам нужно поместить его выше в файле. Однако, если этот член является просто указателем (размер которого не зависит от размера указанного класса), достаточно простого прямого объявления указанного класса.
Обратите внимание, что с #include
, это почти то, что происходит в любом случае: препроцессор «копирует-вставляет» все включенные файлы в компилируемый файл. Для компилятора это то же самое.
Вопрос исходит из исходного представления стиля java / C #. В C ++ макет исходного кода сильно отличается. Один исходный модуль / "файл cpp" / может обрабатывать столько объявлений, сколько вы хотите вставить. Однако это не обязательно хорошая стратегия, так как в какой-то момент вам нужно сказать другим классам, как обращаться с вашими классами. В C ++ класс может иметь отдельные разделы определения и объявления, и вы можете размещать их в разных файлах. Определение класса совместно используется другими исходными файлами с помощью операторов #include, поэтому вы можете использовать эти классы в любом сценарии, где требуется определение. Если вы имеете дело с классами, которые используются только в одном исходном файле, вы можете скрыть его прямо в исходных файлах, но если вы хотите связать их с другими классами, вам нужно поместить определение в файл заголовка.
Это может помочь вам улучшить скорость компиляции - особенно если вы используете предварительно скомпилированные заголовки, но осторожно, потому что pch-s не являются частью стандарта C ++, и каждый компилятор обрабатывает их по-своему! - и гибкость вашего кода. Ваш учитель должен знать об этих фактах ...
Да, вы могли бы сделать это без проблем. либо несколько классов, либо вложенный класс.