它在C++ FAQ网站中提到 - "当通过值作为基类对象传递时,较大的派生类对象被切片",切片是什么意思?任何样品要展示?
http://www.parashift.com/c++-faq-lite/value-vs-ref-semantics.html#faq-31.8
我使用VSTS 2008 +本机C++作为我的开发环境.
如果两个方法都声明为虚拟,那么被调用的Method1()的两个实例都不应该是派生类的Method1()吗?
我看到BASE然后每次调用DERIVED.我正在为面试做一些评论,我想确保我有这个直接.的xD
class BaseClass
{
public:
virtual void Method1() { cout << "Method 1 BASE" << endl; }
};
class DerClass: public BaseClass
{
public:
virtual void Method1() { cout << "Method 1 DERVIED" << endl; }
};
DerClass myClass;
((BaseClass)myClass).Method1();
myClass.Method1();
Run Code Online (Sandbox Code Playgroud)
方法1 BASE
方法1 DERVIED