用C++,有的概念不常用,有时候用的时候就忘记了。查阅大部头的书比较麻烦。用Essential C++最好了。
手边常备Essential C++。很不错。
构造 析构:
析构函数无返回值,无参数。析构函数很多时候不用。用的情况一般是构造函数用 NEW 申请了堆空间。
若果有必要设计拷贝构造函数,那么也一定有必要设计 copy assignment operator.一般有指针成员变量的话,需要设计拷贝构造函数。默认的拷贝构造不好用。
this 指针:
class demo
{
public:
int fundemo(int a,int b) {value1 = a,value2 = b}; // <=> int fundemo(int a,int b,demo * this){this.value1 = a,this.value2 = b};
private:
int value1;
int value2;
};
static:
static member function 类外定义的时候不需要 STATIC 关键字
static member data 类内相当于声明,类外需要定义和初始化:int A::demostatic = 5;
class intBuffer {
public:
// ...
private:
//static const int _buf_size = 1024; // ok but not with VC++
enum { _buf_size = 1024 };
int _buffer[ _buf_size ]; // ok
};
运算符重载:
member operator this指针隐含代表左侧操作数。
non -member operator 多以个参数。
嵌套型别: typedef 这里就是这只别名。typedef Triangular_iterator iterator;
友元: friend 声明可以出现在类的任何位置,不受public 和private 的限制。使用是为了效率。可以不用。
实现一个 copy assignment opterator:
matrix& matrix::operator=(const matrix& rhs)
{
if(*this != rhs)
{
_roh = rhs._roh;
delete [] _pmat;
_pmat = new double[elem_cnt];
}
return *this;
}
function object: -----------提供有function call 运算符的 class
class LessThan {
public:
LessThan( int val ) : _val( val ){}
int comp_val() const { return _val; }
void comp_val( int nval ){ _val = nval; }
bool operator()( int value ) const;
private:
int _val;
};
inline bool
LessThan::operator()( int value ) const
{ return value <_val; }
将 iostream运算符重载
<<这个运算符必须是 non-member function。
>> 这个运算符需要考虑输入问题,难设计。
指向member function 的指针
与指向 non-member function 的指针有些不同,必须要指出他是指向那个class 的。
这个比较陌生。 ->* .* 这里会这么用。