分类:
2010-12-10 15:21:54
基类中定义的protected成员可以在派生类内访问、可以被派生类对象访问,但不可以通过基类对象访问。 只有定义了基类以后才可以在派生类中指定此基类,如果只是声明基类而没有定义,则不能在派生类中指定此类为基类;如果只是声明派生类而不定义,不能指定基类,在定义时才指定基类。 基类中virtual函数在派生类中重写,需要动态绑定,而非virtual函数则静态绑定,在编译时根据调用对象的静态类型确定调用哪个类中的版本,virtual函数则在运行时确定函数的版本,根据调用对象的动态类型确定。 对象静态类型是对象定义时指定的类型,动态类型是为对象赋值时指定的对象的类型,基类的引用或指针可以指向基类对象或派生类对象,指向派生类对象时,基类类型是该对象的静态类型,派生类类型是该对象的动态类型。 virtual函数如果在基类和派生类中都指定了默认参数,将根据调用对象的静态类型确定默认参数的值,而根据条用对象的动态类型确定调用函数的版本。如果通过基类引用或指针(指向派生类对象)调用virtual函数,则将基类virtual函数中的默认实参复制到派生类virtual函数的形参,调用派生类的virtual函数执行。 |