.


:




:

































 

 

 

 


()




 

template <class T1, class T2>

class A

{

T1 i;

T2 j;

public:

A(T1 a, T2 b) {i=a;j=b;}

void show() {cout<<i<<' '<<j<<endl;}

};

 

int main()

{

A <int,double> ob1(10,0.23);

A <char,char*> ob2('q',"qwert");

ob1.show();

ob2.show();

return 0;

}

 

 

.

 

, .

#include <iostream>

using namespace std;

#include <string.h>

template <class T1,class T2>

T1 sm(T1 a,T2 b) //

{ return (T1)(a+b); // c

}

template <class T1,class T2,class T3>

T1 sm(T1 a,T2 b,T3 c) //

{ return (T1)(a+b+c); // c

}

int main()

{cout<<" sm(int,int) = "<<sm(4,6)<<endl;

cout<<" sm(int,int,int) = "<<sm(4,6,1)<<endl;

cout<<" sm(int,double) = "<<sm(5,3)<<endl;

cout<<" sm(double,int,short)= " <<

sm(.4,6,(short)1)<<endl;

// cout<<sm(" "," ++")<<endl; error cannot add two pointers

return 0;

}

 

.

, :

#include <iostream>

using namespace std;

template <class T1,int i=0,class T2>

class cls

{ T1 a;

T2 b;

public:

cls(T1 A,T2 B): a(A),b(B){}

~cls(){}

T1 sm() //

{ // i+=3; // error member function 'int __thiscall cls<int,2>::sm(void)'

return (T1)(a+b+i); //a=b+i; return a;

}

};

int main()

{ cls <int,1,int> obj1(3,2); // const i 1

cls <int,0,int> obj2(3,2,1); // error 'cls<int,0>::cls<int,0>':no overloaded

// function takes 3 parameter s

cls <int,int,int> obj13(3,2,1); // error 'cls': invalid template argument for 'i',

// constant expression expected

cls <int,int> obj2(3,1); // error ( )

cout<<obj1.sm()<<endl;

return 0;

}

6.

template <class T1,int i=0,class T2> -

, cls , −

(1 2), (int i=0) − . -

i cls <int,1,int> obj1(3,2).

i template

template <class T1,int i,class T2>

 

 

.

, , .

. :

- ;

- ;

- .

, oper vect.

#include <iostream>

using namespace std;

template <class T>

class vect // -

{protected:

T *ms; // -

int size; // -

public:

vect(int n): size(n) //

{ ms=new T[size];}

~vect(){delete [] ms;} //

T &operator[](const int ind) // []

{ if((ind>0) && (ind<size)) return ms[ind];

else return ms[0];

}

};

template <class T>

class oper: public vect<T> //

{ public:

oper(int n): vect<T>(n) {} //

~oper(){} //

void print() //

{ for(int i=0;i<size;i++)

cout<<ms[i]<<' ';

cout<<endl;

}

};

int main()

{ oper <int> v_i(4); // int-

oper <double> v_d(4); // double-

v_i[0]=5; v_i[1]=3; v_i[2]=2; v_i[3]=4; // int

v_d[0]=1.3; v_d[1]=5.1; v_d[2]=.5; v_d[3]=3.5; // double

cout<<"int = ";

v_i.print();

cout<<"double = ";

v_d.print();

return 0;

}

, - .

friend.

, , . , - ( ) ( ).

 

 

( , )

template <class T>

class B;

 

template <class T>

class A

{

T *m;

int size;

public:

A(int size, T *m);

~A();

friend T fun1 (T&);

friend T B<T>::fun2(A<T> &);

 

};

 

 

template <class T>

class B

{

public:

T fun2(A<T> &);

};

 

 

template <class T>

void fun1(T &obj)

{

}

 

 

int main()

{

int m1[]={1,2,3};

A <int> a1(3,m1);

fun1(a1);

return 0;

}

 





:


: 2016-07-29; !; : 450 |


:

:

, .
==> ...

1929 - | 1720 -


© 2015-2024 lektsii.org - -

: 0.016 .