跟随贺老师,模板类的小例子。

前言:本人买了一本C++ primer 第五版,苦于书中例子很少,有时候看了很多页,都不知道一个新知识如何运用。比如这次的template.

以下代码取自贺老师的复数模板类。

#include <iostream>  
using namespace std;  
template<class T>  //类声明前加模板的声明  
class Complex    
{  
public:  
    Complex( ){real=0;imag=0;}      
    Complex(T r,T i){real=r;imag=i;}   //类声明中的每一个T,将被对象定义时提供的实际类型代替  
    Complex complex_add(Complex &c2);  
    Complex complex_minus(Complex &c2);  
    Complex complex_multiply(Complex &c2);  
    Complex complex_divide(Complex &c2);  
    void display( );    
private:  
    T real;   //数据成员的类型,也将被对象定义时提供的实际类型代替  
    T imag;  
};  
 
template<class T>  
void Complex<T>::display( )    
{  
    cout<<"("<<real<<","<<imag<<"i)"<<endl;  
} 

template<class T> //每一个成员函数的定义前,必须要声明类模板  
//使用了模板的类,将不再独立使用,其类名的完整表示为“类模板名<虚拟类型参数>”  

Complex<T> Complex<T>::complex_add(Complex<T> &c2)  
{  
    Complex<T> c;   //凡用到类名处也用“类模板名<虚拟类型参数>”形式;本题中求两个复数的和,自然要产生一个新的复数对象  
    c.real=real+c2.real;  
    c.imag=imag+c2.imag;  
    return c;  
}  
int main( )  
{  
    Complex<int> c1(3,4),c2(5,-10),c3; //定义对象时,用“类模板名<实际类型名>”形式  
    c3=c1.complex_add(c2);   
    cout<<"c1+c2=";  
    c3.display( );   
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值