C++的函数重载和类模板有什么区别?
展开全部
应该没有实质性的区别吧,底层的实现原理应该是一致的,不过类重载之后类中的成员函数和数据成员都可以用类中的模版了!
类重载:
templet<class T>(此处可以有多个类型包括类类型,templet(class T,Link H))
class Array{
private:
enum size{size=100};
T arr[size];
public:
T &operater [] (int i)
{
if(i>=0 && i<size)
return arr[i];
}
};
int main()
{
Array<int>hh;
Array<double>dd;
for(int i=0;i<20;i++)
{
hh[i]=i*i+i;
dd[i]=i+0.111*i;
}
for(int i=0;i<20;i++)
cout<<hh[i]<<endl<<dd[i]<<endl;
system("pause");
return 0;
}
}
类重载:
templet<class T>(此处可以有多个类型包括类类型,templet(class T,Link H))
class Array{
private:
enum size{size=100};
T arr[size];
public:
T &operater [] (int i)
{
if(i>=0 && i<size)
return arr[i];
}
};
int main()
{
Array<int>hh;
Array<double>dd;
for(int i=0;i<20;i++)
{
hh[i]=i*i+i;
dd[i]=i+0.111*i;
}
for(int i=0;i<20;i++)
cout<<hh[i]<<endl<<dd[i]<<endl;
system("pause");
return 0;
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
应该是和函数模板的区别,你可以认为函数模板是将函数参数变化的部分抽象出来,其他没有区别
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
重载:一般指的是函数重载,函数重载只是对某个函数实现多种不同的写法
如void Func(), void Func(int) , void Func(char);
类模板:把整个类写成一个模板,而类里面又可以有很多成员函数,成员变量。这是重载所做不到的。
template <class T>
class TestClass
{
private:
T a;
T b;
public:
TestClass(){};
T GetA(){};
T GetB(){};
T SetA(){};
T SetB(){};
}
如void Func(), void Func(int) , void Func(char);
类模板:把整个类写成一个模板,而类里面又可以有很多成员函数,成员变量。这是重载所做不到的。
template <class T>
class TestClass
{
private:
T a;
T b;
public:
TestClass(){};
T GetA(){};
T GetB(){};
T SetA(){};
T SetB(){};
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询