基类派生类绑定智能指针后的转换

Posted zeqi1991

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基类派生类绑定智能指针后的转换相关的知识,希望对你有一定的参考价值。

class A

public:
	virtual ~A()
	virtual void SetNumber(int number) = 0;
	virtual void Fun();
;

void A::Fun()

	std::cout << "A::Fun" << std::endl;


class B : public A

public:
	virtual ~B()
	virtual void SetNumber(int number) override;
	virtual void Fun() override;
	void Print();
private:
	int m_number;
;

void B::SetNumber(int number)

	m_number = number;


void B::Fun()

	std::cout << "B::Fun" << std::endl;


void B::Print()

	std::cout << m_number << std::endl;


int main(int argc, char* argv[])

	std::shared_ptr<A> p = std::make_shared<B>();
	p->SetNumber(argc);
	std::shared_ptr<B> pB = std::dynamic_pointer_cast<B>(p);
	if (pB)
		pB->Print();

	auto pA = std::static_pointer_cast<A>(pB);
	if (pA)
		pA->Fun();

	return EXIT_SUCCESS;

以上是关于基类派生类绑定智能指针后的转换的主要内容,如果未能解决你的问题,请参考以下文章

将基类指针强制转换为子类指针后的疑惑

与简单地创建派生类指针相比,将基类绑定到派生类有啥好处?

派生类和基类的转换

派生类和基类之间的指针到指针的转换?

无法将参数 1 从派生指针转换为基类指针引用

向上强制转换和向下强制转换