普通函数是静态编译的,没有运行时多态,只会根据指针或引用的字面值类对象,调用自己的普通函数。
普通函数是父类为子类提供的强制实现。
因此,在继承关系中,子类不应该重写父类的普通行数,因为函数的调用只与类对象的字面值有关。
class Family
{
public:
Family(string name="鲜花":flowers(name){}
string getname()
{
return flowers;
}
virtual void like()
{
cout<<"家人喜欢不同的"<<endl;
}
private:
string flowers;
};
c++的virtual函数相互之间往往表现为共存关系,可替代,连载
c++与java的不同:
c++有指针
c++有析构函数
c++的作用域标识符::
c++的友元函数和友元类
c++的允许多继承,有不同的继承方式
c++的virtual,比java的abstract和interface更复杂且灵活(虚基类,抽象类等)
c++的函数运算符重载,函数模板与类模板