C++ 函数重写不起作用
关于继承和函数重写的问题C++ 函数重写不起作用,c++,inheritance,overriding,C++,Inheritance,Overriding,关于继承和函数重写的问题 // base.h class Base { protected: void a(); public: void b(); } // base.cc void Base::a() { // Empty. return; } void Base::b() { this->a(); } // derived.h class Derived : public Base { protected: void a(); }
// base.h
class Base {
protected:
void a();
public:
void b();
}
// base.cc
void Base::a() {
// Empty.
return;
}
void Base::b() {
this->a();
}
// derived.h
class Derived : public Base {
protected:
void a();
}
// derived.cc
void Derived::a() {std::cout << "OK" << std::endl;}
//base.h
阶级基础{
受保护的:
使a()无效;
公众:
无效b();
}
//base.cc
void Base::a(){
//空的。
返回;
}
void Base::b(){
这个->a();
}
//导出的.h
派生类:公共基{
受保护的:
使a()无效;
}
//派生的.cc
void-Derived::a(){std::cout必须声明一个函数virtual
,才能使继承工作
// base.h
class Base {
protected:
void a();
public:
virtual void b();
}
您必须声明一个函数virtual
,才能使继承生效
// base.h
class Base {
protected:
void a();
public:
virtual void b();
}
您必须声明一个函数virtual
,才能使继承生效
// base.h
class Base {
protected:
void a();
public:
virtual void b();
}
您必须声明一个函数virtual
,才能使继承生效
// base.h
class Base {
protected:
void a();
public:
virtual void b();
}
您需要在基类声明中标记b()
virtual
:
class Base {
protected:
void a();
public:
virtual void b();
};
注意类声明结束时的分号:C++中需要的。注意,在派生类中不需要编写代码>虚拟< /C>,尽管有些人采用了这种风格。
(多态性不是C++中的自动,不像java).< /p> 在基类声明中,需要标记<代码> b](<代码> >代码>虚拟<代码>:
class Base {
protected:
void a();
public:
virtual void b();
};
注意类声明结束时的分号:C++中需要的。注意,在派生类中不需要编写代码>虚拟< /C>,尽管有些人采用了这种风格。
(多态性不是C++中的自动,不像java).< /p> 在基类声明中,需要标记<代码> b](<代码> >代码>虚拟<代码>:
class Base {
protected:
void a();
public:
virtual void b();
};
注意类声明结束时的分号:C++中需要的。注意,在派生类中不需要编写代码>虚拟< /C>,尽管有些人采用了这种风格。
(多态性不是C++中的自动,不像java).< /p> 在基类声明中,需要标记<代码> b](<代码> >代码>虚拟<代码>:
class Base {
protected:
void a();
public:
virtual void b();
};
注意类声明结束时的分号:C++中需要的。注意,在派生类中不需要编写代码>虚拟< /C>,尽管有些人采用了这种风格。
<>(多态性不是C++中的自动,不像java).a
在派生类中重写
会产生指向问题的错误:-)a
在派生类中重写会产生指向问题的错误:-)a
在派生类中重写会产生指向问题的错误:-)重写
在派生类中派生类中的de>a将产生指向问题的错误:-)