STL学习之静动态多态,成员模板

1.动态多态和静态多态的区别。

动态多态:动态多态就是在程序运行过程中,拿着父类的指针去访问子类的对象。

静态多态:静态多态其实就是泛型,在静态编译的时候实现多态。


2.动态多态和静态多态共同点和不同点。

静态多态和动态多态都是为了实现多态,统一一个函数实现接口。动态多态中会有必须要实现的纯虚函数,所以,动态多态的实现是强制性的。而在静态多态中,是必须实现统一的接口才能够达到功能,比如实现Vector中的Push_back接口才能实现Push_back功能。

3.动态多态和静态多态的优劣区别:

动态多态是在程序执行的过程使用父类的指针去调用子类的对象,这样就非常的耗费资源,所以动态多态的运行速度很慢。静态多态是在编译的时候现实的多态,所以静态的运行速度很快,但是它的缺点也很是明显,就是要比动态多态更加的难以调试。

4.静态多态在编译期间的执行的两个过程:

1.检查编译中的语法错误。比如少个;什么的。

2.在编译的过程检查程序调用的错误。

模板:

如果一个方法或者类被做成了模板,那么在编译的时候就会被Copy一份模板当中的代码,生成出类或者方法。

如果是生成出来的类,那么两个类之间是相对独立的存在。

如果,想在用一个模板,生成多个类,且多个类之间可以互相访问成员变量的话,可以在模板当中给他们统一写一个接口,Get方法,这样就能实现参数互相访问了。

template<typename T>
class MyStack
{
T data_;
public:
MyStack(const T data) :data_(data){};
template<typename x>
void Assgin(x Mydata) //将用来交换的方法在做成一个模板函数就可以实现交换-》成员模板
{
data_ = GetValue();
}


const T& GetValue() const//实现一个统一的接口
{
return data_;
}


};


int main()
{
MyStack<int> type_int(1);
MyStack<double> Type_double(2.1111);


type_int.Assgin(Type_double);


return 0;
}

这就是提供了同一接口和实现类型不同的交换方法。


成员模板(重要):

template<typename x>
void Assgin(x Mydata) //将用来交换的方法在做成一个模板函数就可以实现交换-》成员模板
{
data_ = GetValue();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值