工作需要,开始学习MFC,最近在读《深入浅出MFC》,将所看的内容整理作为笔记
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
************************************************
**勿在浮沙筑高台——c++重要性质 **
**date:27/12/2013 edit by linuxsbird **
************************************************
c++的重要性质:封装性(encapsulation)继承性(inheritance)多态性(polymorphism)
1 封装性:
class与struct的区别:
1 关于使用大括号初始化:
class和struct如果定义了构造函数的话,都不能用大括号进行初始化如果没有定义构造函数,struct可以用大括号初始化。
如果没有定义构造函数,且所有成员变量全是public的话,可以用大括号初始化。2 关于默认访问权限:
class中默认的成员访问权限是private的,而struct中则是public的。3 关于继承方式:
class继承默认是private继承,而struct继承默认是public继承。
2 继承性:
主要需要我们掌握this指针
一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果。this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。
|
void Date::setMonth( int mn )
{
month =mn;
this->month =mn;
(*this).month =mn;
//这三句是等价的
}
|
1.如果你以一个“基类之指针”指向“派生类之对象”,那么经由该指针你只能够调用基类所定义的函数。
2.如果你以一个“派生类之指针”指向一个“基类之对象”,你必须先做明显的转型。这种做法很危险,不符合真是的生活经验,在程序设计上也会给程序员带来困惑。
3.如果基类和派生类都定义了“相同名称的成员函数”,那么通过对象指针调用成员还数时,到底调用的是哪一个函数,必须视该指针的原始类型而定,而不是视实际所指的对象的类型而定。