当前位置: 首页 > wzjs >正文

做网站 广州台州建设网站制作

做网站 广州,台州建设网站制作,怎样查后缀vc域名网站,网站制作公司司首先写一个最简单的奇异递归 第一个例子 //奇异递归需要用到c++的模板特性 #include<iostream> using namespace std;//基类 template <typename Type> class Animal { public:static int Counter;Animal(){++Counter;}~Animal(){--Counter;} }; //因为是static所…

首先写一个最简单的奇异递归
第一个例子

//奇异递归需要用到c++的模板特性
#include<iostream>
using namespace std;//基类
template <typename Type>
class Animal
{
public:static int Counter;Animal(){++Counter;}~Animal(){--Counter;}
};
//因为是static所以需要在类外进行初始化
template <typename Type>int Animal<Type>::Counter = 0;//派生类class Dog :public Animal<Dog>//模板参给dog
{
public://构造,析构给个默认Dog() = default;~Dog() = default;
};
class Cat :public Animal<Cat>//模板参给dog
{
public://构造,析构给个默认Cat() = default;~Cat() = default;
};int main()
{Dog d1, d2, d3;cout << Dog::Counter<<endl;Cat c1;cout << Cat::Counter << endl;return 0;
}//这样就形成了一个奇异递归
//static int 本来是所有类共享,却打印出了不同值,违背了这个共享原则//这是因为它是模板,它的模板参数不同(一个是cat,一个是dog),所以这是两个不同的类,
//所以个这个两个不是同一个Counter

第二个例子

//奇异递归需要用到c++的模板特性
#include<iostream>
using namespace std;
//第二个示例,用模板的方法实现一个多态
//基类
template <typename Type>
class Animal
{
public:void speak(){	//强转一下,将this转为Type*,调用他的speakstatic_cast<Type*> (this)->speak();}};//派生类class Dog :public Animal<Dog>//模板参给dog
{
public://构造,析构给个默认Dog() = default;~Dog() = default;void speak(){	cout << "汪汪"<<endl;}
};
class Cat :public Animal<Cat>//模板参给dog
{
public://构造,析构给个默认Cat() = default;~Cat() = default;void speak(){cout << "喵喵" << endl;}
};//模板调用函数
template <typename Type>
void test(Animal<Type>& t)
{t.speak();
}int main()
{Dog d1;//实例化一个dog,调用test方法test(d1);Cat c1;test(c1);return 0;
}//这样就形成了一个奇异递归
//static int 本来是所有类共享,却打印出了不同值,违背了这个共享原则//这是因为它是模板,它的模板参数不同(一个是cat,一个是dog),所以这是两个不同的类,
//所以个这个两个不是同一个Counter

这个等价下面不使用模板来实现多态

//奇异递归需要用到c++的模板特性
#include<iostream>
using namespace std;
//第二个示例,用模板的方法实现一个多态
//基类class Animal
{
public:virtual void speak() = 0;//给个纯虚函数,让子类去重写它};//派生类class Dog :public Animal
{
public://构造,析构给个默认Dog() = default;~Dog() = default;void speak(){	cout << "汪汪"<<endl;}
};
class Cat :public Animal
{
public://构造,析构给个默认Cat() = default;~Cat() = default;void speak(){cout << "喵喵" << endl;}
};模板调用函数
//template <typename Type>
//void test(Animal<Type>& t)
//{
//	t.speak();
//}//等价于用多态来实现
void test(Animal&

文章转载自:

http://DWr5zdw7.tLqsL.cn
http://z1Kdg437.tLqsL.cn
http://RnIrIaag.tLqsL.cn
http://6ov67fFI.tLqsL.cn
http://Ltq0jEuZ.tLqsL.cn
http://dJ03rIov.tLqsL.cn
http://jo8stoj2.tLqsL.cn
http://OMYBIfdD.tLqsL.cn
http://SO7bvxay.tLqsL.cn
http://7fJ2KU8E.tLqsL.cn
http://BoB4kl7a.tLqsL.cn
http://RSmTMcq8.tLqsL.cn
http://4cT7TtZV.tLqsL.cn
http://d2hDXtUj.tLqsL.cn
http://G2QDzdbi.tLqsL.cn
http://VQXRDZMK.tLqsL.cn
http://c4e8hfL9.tLqsL.cn
http://6LVEt9Hq.tLqsL.cn
http://PUBckI40.tLqsL.cn
http://hHU3X7rd.tLqsL.cn
http://fA0n0uSy.tLqsL.cn
http://3pjV0jvR.tLqsL.cn
http://2jjOPiZw.tLqsL.cn
http://Xrh4fKZ5.tLqsL.cn
http://O9cjdMVV.tLqsL.cn
http://O4YI5Wdr.tLqsL.cn
http://hyn84tRK.tLqsL.cn
http://PvELHz22.tLqsL.cn
http://FMxHPUUe.tLqsL.cn
http://onavDfMs.tLqsL.cn
http://www.dtcms.com/wzjs/700366.html

相关文章:

  • 网站消息推送广告营销推广
  • 做调查问卷的网站怎么做服务器网站吗
  • 泉州建站服务制作网站链接
  • 营销型网站建设集装箱液袋wordpress模板title属性
  • 订餐网站系统建设方案自己电脑上做的网站 怎么让别人看
  • 做网站架构图做项目网站
  • 如何建立一个网站放视频定制网站制作服务商
  • html5购物网站网页个人主页
  • 做网站时给图片添加链接初学者学做网站怎么学
  • 网站ip被屏蔽怎么办仿win8网站模板
  • 佛山网站优化效果互联网之光博览会
  • 境外网站做网站涉黄wordpress去掉rss订阅
  • 网站建设与管理简单么青岛大学网站建设
  • 免费网站模板建站长春网站建设建站系统
  • 自助建设手机网站自己设计好的网站怎么设置访问
  • 湛江网站开发哪家专业广州网站建设 领航科技
  • 域名销售网站开发app和微网站有哪些功能
  • 建筑设计网站大全网站做网站的公司哪个好
  • 北京网站建设公司 蓝纤科技 网络服务学网页设计的课程
  • 东山网站建设自建网站主题及策划
  • 旅游公司网站建设方案html5网站开发开题报告
  • 网站做关键词做电影网站代理合法么
  • 做茶叶网站的公司卡片式设计网站制作
  • 怎么做外国网站流量购物网站设计图
  • 全球军事网站猪八戒网站建设公司
  • 网站建设经理wordpress 双主页
  • 阿里云备案成功怎么建设网站架子鼓谱那个网站做的好
  • 餐饮设计公司网站海外医疗兼职网站建设
  • 网站设计与建设实训抚顺网站推广
  • 开创云网站建设wordpress+程序优化