C++设计中的类模板和函数模板

一、补充static
static 函数没有this pointor  它只能用来处理静态数据
class Account
{
public:
static double m_rate;
static void set_rate(const double& x){m_data =x;}


};
double Account::m_rate=8.0;//静态数据在外面一定要写这个
int main()
{
Account::set_rate(5.0);
Account a;
a.set_rate(7.0);
}
二、把ctors放在private 
class A
{
public:
static A& getInstance(return a;);
setup(){}
private:
A();
A(const A& ths);
static A a;
};
//也可以这样写
class A
{
public:
static A& getInstance(return a;);
setup(){}
private:
A();
A(const A& ths);
};
A& A::getInstance()
{
static A a;
return a;
}
三、cout 补充(为啥它能接受各式各样类型的打印)
cout的源代码
可以说 cout属于一种 ostream,然后ostream里有各种各样的函数,于是cout 可以接受各种类型的打印
四、class template,类模板
template<typename T>//说明目前T还没有绑定,不知道是什么,于是下面的class成为了 class template
class complex
{
public:
complex(T r = 0,T i = 0)
:re (r),im (i)
{}
complex& operator += (const complex&);
T real () const {return re;}
T imag () const {return im;}
private:
T re, im;
frienf complex& _doapl(complex* const complex&);
};
complex<double> c1(2.5 , 1.5);
complex<int> c2(2,6);
五、function template,函数模板
template<class T>
inline
const T& min(const T& a ,const T& b )
{
return a<b?b:a;
}
class stone
{
public:
stone(int w,int h,int we)
:_w(w),_h(h),_weight(we)
{}
bool operator < (const stone& rhs) const{return _weight<rhs._weight;}
private:
int _w,_h_weight;
};
stone r1(2,3),r2(3,3),r3;
r3=min(r1,r2);


六、namespace
namespace std  //指所有的东西被包装在这个命名空间内
{


}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值