v3f intersect( const line_struct line1, const line_struct line2);
в точности эквивалентно
v3f intersect(line_struct line1, line_struct line2);
с точки зрения внешнего поведения, так как обе стороны копируют строки в intersect
, поэтому исходные строки не могут быть изменены функцией. Только когда вы реализуете (а не объявляете) функцию с формой const
, есть разница, но не во внешнем поведении.
Эти формы отличаются от
v3f intersect(const line_struct *line1, const line_struct *line2);
, который не должен копировать строки, потому что он пропускает только указатели. Это предпочтительная форма в C, особенно для больших структур. Также требуется для непрозрачных типов .
v3f intersect2(line_struct &line1, line_struct &line2);
недействительно C.