Функции-члены класса СИ++ - определение - внутри или за пределами класса (снаружи) - какая разница

использую замечательную статью = http://codingrus.ru/readarticle.php?arti...

Определить функции-члены класса можно внутри описания класса или за его пределами

Встраиваемые функции

В первом случае функция считается встраиваемой (если разрешена соответствующая опция в установках компилятора).
Встраиваемая функция характерна тем, что компилятор С++ обрабатывая вызовы этой функции в программе , заменяет их на непосредственно объектный код, соответствующей определению этой функции.

Вследствие этого нужно помнить, что встраиваемые функции, как правило, имеют короткие определения (уточню - должны иметь короткие определения для оптимальности выполнения программы).

Автор приводит пример =

class CDate
{
int mounth, day, year;
public: GetDate() {return Day};
SetDate(int,int,int);
};

В примере выше функция GetDate автоматически определяется как встраиваемая, в то время как SetDate, и другие функции, описанные вне класса CDate будут организованы по обычным правилам языка С++.

Обычное описание метода класса

Под обычными правилами, подразумевается описание с указанием области видимости функции (для функции-члена класса областью видимости будет являться сам класс). Например - ниже приведено описание конструктора, код которого вынесен за рамки описания класса - класс содержит только объявление данного конструктора =

 class employee

{
public:
   employee(char *, char *, float); // объявление конструктора
   void show_employee(void); // объявление как-то другого метода("функции-члена") класса
private:
   char name [ 64 ];
   char position[64];
   float salary;
};

// далее описание (непосредственно код) конструктора класса employee
employee::employee(char *name, char *position,float salary)

{
   strcpy(employee::name, name);
   strcpy(employee::position, position);
   employee::salary = salary;
} 

последний пример взят отсюда

При этом - в статье , на которую мы опираемся при составлении данной сказано:

В определениях всех методов класса элементы данных класса, которому принадлежит определяемый метод, доступны без указания элементов данных в списке параметров метода. Эта особенность синтаксиса языка C++ во многом упрощает программирование классов и делает программы более обозримыми.

относительно примера выше - мы тоже можем заметить , что для обращения к employee::salary =

employee::salary = salary;

мы передали в конструктор, только некое одноимённое значение для параметра salary =

....float salary)

к полю же класса типа employee мы обращаемся напрямую в коде конструктора - ранее не передавае его как параметр =

employee::salary = salary;