一、补充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 //指所有的东西被包装在这个命名空间内
{
}
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 //指所有的东西被包装在这个命名空间内
{
}