1 / 5 指针1
使用方法定义、赋值;释放,置零
Int* pInt = new int(3); delete pInt; pInt = 0; 2
迷途指针,空指针:迷途指针就是其所指向的内存被释放,空指针则指指针的值为0
转换运算符没有指定返回值,尽管返回一个转换后的值
例如:将、 class Counter 的一个对象转换为unsigned short 的值,Class Counter { Private: Int value; Public: Operator unsigned int();// } Counter::operator unsigned int() { Return (int)value; } Main() { Counter ctr; Int intValue = ctr; } 5
派生类隐藏基类中方法:覆盖基类的某个方法后,就不能通过派生类对象使用任何同名的基类方法,即派生类若要覆盖某个方法就要覆盖所有的同名方法
类似的情况是提供了任何构造函数,编译器将不会提供默认构造函数
Const 方法,派生类中忘记方法中的 const 关键字,则原基类方法不是被覆盖而是被隐藏了
派生类对象调用被覆盖的基类方法subObject
BaseClassName
method(); 7
切除 slicing :仅当通过指针和引用进行调用时,才能发挥虚方法的魔力;按值传递对象时将不能发挥虚方法的魔力
Class Mammal {virtual void speak(){}} ;class Dog{void speak(){}}; class Cat{void speak(){}}; Void PtrFunction(Mammal*); void ValueFunction(Mammal); void RefFunction(Mammal&); Void