指针
使用方法定义、赋值;释放,置零。Int* pInt = new int(3); delete pInt; pInt = 0;
迷途指针,空指针:迷途指针就是其所指向的内存被释放,空指针则指指针的值为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;
}
派生类隐藏基类中方法:覆盖基类的某个方法后,就不能通过派生类对象使用任何同名的基类方法,即派生类若要覆盖某个方法就要覆盖所有的同名方法。类似的情况是提供了任何构造函数,编译器将不会提供默认构造函数。Const方法,派生类中忘记方法中的const关键字,则原基类方法不是被覆盖而是被隐藏了。
派生类对象调用被覆盖的基类方法subOblassNd();
切除slicing:仅当通过指针和引用进行调用时,才能发挥虚方法的魔力;按值传递对象时将不能发挥虚方法的魔力。Class Mammal {virtual void speak(){}};class Dog{void speak(){}}; class Cat{void speak(){}};
Void PtrFunction(Mammal*); void ValueFunction(Mammal); void RefFunction(Mammal&);
Void ptrFunction(Mammal * pMammal) {pMammal->speak();}
Void valueFunction(Mammal vMammal) {vMamm()}//不能调用虚函数,还是基类函数
Void refFunction(Mammal & rMammmal){rMamm();}
虚复制构造函数:基类Clone()虚函数,派生类中重载该函数,实现拷贝
基类:Virtual Mammal* Clone(){return new Mammal(*this);}
派生类:virtual Mammal * Clone() {return new Dog(*this);}
任何一个方法为虚方法时,应将析构函数声明为虚函数。
使用new创建对象时,delete删除所占用的内存;new <class> [size]创建数组时,delete[]删除数组内存空间,若遗漏了方括号,将只删除数组中的第一个对象,产生内存泄露。
();//ge
《21天学会C》笔记 来自淘豆网www.taodocs.com转载请标明出处.