2011年6月11日星期六
ü 访问修饰符
private:类成员,友元
protected:类成员,友元,子类
public:只要对象可见,即可访问
ü :: 操作符 表示函数是属于某个类的成员,否则是全局函数
ü 在类中完整的定义函数与只声明函数原型的区别:
前者被编译器当成内联函数(inline member funtion)
后者就是正常的函数(not inline)
ü 调用不带参数的构造函数时,不要括号(),如
CRectangle rectb; // right
CRectangle rectb(); // wrong!
ü 默认构造函数(default constructor)是在不存在显式定义构造函数时,由编译器自动生成,不带参数,所以在声明对象时,要符合上面的定义。一旦存在显式定义的函数,编译器不再定义默认构造函数,那么在声明对象时,必须与显式声明的形式相一致。
ü 在不存在显式声明的时候,编译器除了声明默认构造函数(default constructor),还声明了其他3类默认函数:copy constructor,copy assignment operator,default destructor
ü 类指针中的操作符
expression | can be read as |
*x | pointed by x |
&x | address of x |
x.y | member y of object x |
x->y | member y of object pointed by x |
(*x).y | member y of object pointed by x |
x[0] | first object pointed by x |
x[1] | second object pointed by x |
x[n] | (n+1)th object pointed by x |
ü 类除了可以使用关键字class定义外,还可以使用关键字union和struct定义。
struct vs class,唯一区别:
关键字struct定义的类的成员,访问级别默认为public,而
关键字class定义的类的成员,访问级别默认为private;
union vs class
关键字union定义的类成员,访问级别默认为public,此外一次只能存储一个类成员
2011年6月12日星期日
ü 可用于重载的操作符
overloadable operators |
+ - * / = < > += -= *= /= << >> <<= >>= == != <= >= ++ -- % & ^ ! | ~ &= ^= |= && || %= [] () , ->* -> new delete new[] delete[] |
ü 声明操作符函数(operator functions),函数名由关键字“operator”+需要重载的操作符符号(operator sign)构成
type operator sign (parameters){/*...*/}
ü 操作符重载函数可以通过两种方式调用:隐式的和显式的,以“+”为例:
c = a + b;
c = a.operator+ (b);
ü 关键字this
1.检查传给成员函数的参数是否非对象本身
2.用于 operator= 函数,通过引用返回值,如:
CVector& CVector::operator= (const CVector& param)
{
x=param.x;
y=param.y;
return *this;
}
ü 静态成员(static member),又称为类变量(class variable)。有两种访问方式:
1.通过对象名+操作符“.”的方式访问,objectname.staticvarname
2.通过类名+操作符“::“的方式访问,classname::staticvarname
please refer to www.cplusplus.com for more info
评论