TemplateSwapByRef.cpp — различия между версиями

Материал из Вики ИТ мехмата ЮФУ
Перейти к: навигация, поиск
(Новая страница: «=== Файл swap.h === <source lang="cpp">#ifndef #SWAP_H #define SWAP_H template<typename T> void swapByRef(T & a, T & b) { T aCopy = a; a = b; b = a…»)
 
 
(не показаны 2 промежуточные версии этого же участника)
Строка 1: Строка 1:
 
=== Файл swap.h ===
 
=== Файл swap.h ===
  
<source lang="cpp">#ifndef #SWAP_H
+
<source lang="cpp">#ifndef SWAP_H
 
#define SWAP_H
 
#define SWAP_H
  
Строка 12: Строка 12:
  
 
#endif // SWAP_H</source>
 
#endif // SWAP_H</source>
 +
Обратите внимание, что реализация шаблонов функций приводится целиком в заголовочном файле.
  
 
=== Файл main.cpp ===
 
=== Файл main.cpp ===
Строка 22: Строка 23:
 
int main() {
 
int main() {
 
     int a = 3, b = 4;
 
     int a = 3, b = 4;
     swap(a, b);
+
     swapByRef(a, b);
 
     cout << a << " -- " << b << endl; // 4 -- 3
 
     cout << a << " -- " << b << endl; // 4 -- 3
  
 
     double c = 3.14, d = 2.71;
 
     double c = 3.14, d = 2.71;
     swap(c, d);
+
     swapByRef(c, d);
 
     cout << c << " -- " << d << endl; // 2.71 -- 3.14
 
     cout << c << " -- " << d << endl; // 2.71 -- 3.14
 
}</source>
 
}</source>

Текущая версия на 11:22, 11 октября 2013

Файл swap.h

#ifndef SWAP_H
#define SWAP_H

template<typename T>
void swapByRef(T & a, T & b) {
    T aCopy = a;
    a = b;
    b = aCopy;
}

#endif // SWAP_H

Обратите внимание, что реализация шаблонов функций приводится целиком в заголовочном файле.

Файл main.cpp

#include <iostream>
#include "swap.h"

using namespace std;

int main() {
    int a = 3, b = 4;
    swapByRef(a, b);
    cout << a << " -- " << b << endl; // 4 -- 3

    double c = 3.14, d = 2.71;
    swapByRef(c, d);
    cout << c << " -- " << d << endl; // 2.71 -- 3.14
}