大佬教程收集整理的这篇文章主要介绍了c – 智能指针与哑指针:多态行为奇怪,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
#include <iostream> #include <memory> using namespace std; class A { public: virtual void who() {Cout << "I am class A" << endl; }; }; class B : public A{ public: void who() {Cout << "I am class B" << endl; }; }; int main(int argc,char *argv[]) { B b; A * aptr = &b; aptr->who(); //Output: I am class B B * bptr = &b; bptr->who(); //Output: I am class B shared_ptr<A> sptr; sptr = make_shared<A>(b); sptr->who(); //Output: I am class A sptr = make_shared<B>(b); sptr->who(); //Output: I am class B return 0; }
前两个输出对我来说很有意义,但是当我初始化的唯一对象是B类时,为什么我可以访问A中定义的成员函数(参见第三个输出)?从某种意义上说,这是一个很好的技巧,可以访问派生类型对象的基类成员.不过,这对我来说仍然有点怪异……
任何人都可以解释为什么这种行为可以使用智能指针而不是常规指针?
以上是大佬教程为你收集整理的c – 智能指针与哑指针:多态行为奇怪全部内容,希望文章能够帮你解决c – 智能指针与哑指针:多态行为奇怪所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。