》在基类方法声明中使用关键字virtual,可以使该方法在基类及所有的派生类中是虚的
》如果使用指向对象的引用或指针来调用虚方法,程序将使用对象类型定义的方法,而不使用为引用或指针类型定义的方法
这称为动态联编或晚期联编,这种行为非常重要,因为这样基类指针或引用可以指向派生类对象
》如果定义的类将被用作基类,则将那些要在派生类中重新定义的类方法声明为虚的。
》构造函数不能是虚函数
》析构函数应当是虚函数
》友元不能是虚函数,只有成员类才能是虚函数
返回值 注意事项
1.不要返回指向局部变量或临时对象的引用。函数执行完毕后,局部变量和临时对象会消失,引用将指向不存在的数据
2.返回指向const对象的引用
使用const引用的常见原因是旨在提高效率,但对于何时采用这种方式存在一些限制。
如果函数返回传递给它的对象,可以通过返回引用来提高效率。
A Max(const A & a1,const A &a2)
{
if(a1.v>a2.v)
reutrn a1;
else
return a2;
}
const A & Max(const A &a1,const A & a2)
{
if(a1.v>a2.v)
reutrn a1;
else
return a2;
}
第一个方法返回将调用复制构造函数A(const A &a);而第二个方法返回引用不会,因此第二个版本所做的工作更少,
效率更高