|
|
|
| Зачем нужны прототипы функций? Только для того, чтобы функцию можно было использовать до ее объявления? Как в этом примере:
#include<iostream.h>
int f(int x);
int main(void)
{
cout << f(5) << endl;
int k;
cin >> k;
return 0;
}
int f(int x) { return x;}
|
Или тут глубже собака зарыта? | |
|
|
|
|
|
|
|
для: antf
(08.11.2009 в 22:33)
| | Да, в том числе и поэтому. Однако, главное преимущество прототипов заключается в том, что вы можете сосредотачивать их в одном месте, скажем h-файле, при этом реализацию функций выносить в cpp-файл (в другой файл). Потом, откомпилировав cpp-файл в виде библиотеки вы можете распространять его совместно с h-файлом. В результате, реализация библиотеки скрыта от пользователя, а интерфейс доступен для изучения в h-файле. Это позволяет легко создавать коммерческие библиотеки, а также реализовывать принцип инкапсуляции (реализации скрытой от внешнего программиста). Собственно и сам C++ так реализован - вы включаете стандартную библиотеку iostream.h, а сам код библиотеки уже откомпилирован. Это не особенно принципиально для небольших проектов, но операционные системы и объемные программы могут компилироваться часами и днями - поэтому заранее скомилированные части программы очень важны и позволяют значительно сократить время компиляции программы.
PS Когда дойдете до классов оцените... В C++, благодаря прототипам, класс можно разбить на любое количество файлов, в отличие от PHP в котором каждый под каждый класс отводится лишь один файл, который зачастую достигает гиганских размеров и даже пользоваться становится очень трудно, так как просмотреть набор его методов достаточно затруднительно. | |
|
|
|
|
|
|
|
для: cheops
(08.11.2009 в 22:43)
| | >Однако, главное преимущество прототипов заключается в том, что вы можете сосредотачивать их в одном месте, скажем h-файле, при этом реализацию функций выносить в cpp-файл (в другой файл).
Хорошее преимущество :) | |
|
|
|