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

宁波做公司网站新站优化案例

宁波做公司网站,新站优化案例,建网站需要什么手需,大学生网页设计报告学习视频 文章目录 模板的概念函数模板函数模板语法函数模板注意事项函数模板案例普通函数与函数模板的区别普通函数与函数模板的调用规则模板的局限性 类模板类模板与函数模板区别类模板中成员函数创建时机类模板对象做函数参数类模板与继承类模板成员函数类外实现类模板分文件…

学习视频

文章目录

  • 模板的概念
  • 函数模板
    • 函数模板语法
    • 函数模板注意事项
    • 函数模板案例
    • 普通函数与函数模板的区别
    • 普通函数与函数模板的调用规则
    • 模板的局限性
  • 类模板
    • 类模板与函数模板区别
    • 类模板中成员函数创建时机
    • 类模板对象做函数参数
    • 类模板与继承
    • 类模板成员函数类外实现
    • 类模板分文件编写
    • 类模板与友元
    • 类模板案例

模板的概念

模板就是建立通用的模具,大大提高复用性

模板的特点:

  • 模板不可以直接使用,它只是一个框架
  • 模板的额通用并不是万能的

函数模板

  • C++ 另一种编程思想称为泛型编程,主要利用的技术就是模板
  • C++ 提供两种模板机制:函数模板类模板

函数模板语法

函数模板的作用:建立一个通用函数,其函数返回值类型和形参类型可以不具体制定,用一个虚拟的类型来代表。

template<typename T>
函数声明或定义

解释:
template — 声明创建模板
typename — 表面其后面的符号是一种数据类型,可以用class代替
T — 通用的数据类型,名称可以替换,通常为大写字母

函数模板注意事项

注意事项:

  • 自动类型推导,必须推导出一致的数据类型T,才可以使用
  • 模板必须要确定出T的数据类型,才可以使用

函数模板案例

案例描述

  • 利用函数模板封装一个排序的函数,可以对不同数据类型数组进行排序
  • 排序规则从大到小,排序算法为选择排序
  • 分别利用char数组int数组进行测试

普通函数与函数模板的区别

  • 普通函数调用时可以发生自动类型转换(隐式类型转换)
  • 函数模板调用时,如果利用自动类型推导,不会发生隐式类型转换
  • 如果利用显示指定类型的方式,可以发生隐式类型转换
template<typename T>
T myAdd(T a, T b){return a+b;	
}int a = 10;
char b = 'b';
myAdd(a, b);// 会报错,使用函数模板时,char不会自动转换为int类型

普通函数与函数模板的调用规则

调用规则如下:
1、如果函数模板和普通函数都可以实现,优先调用普通函数
2、可以通过空模板参数列表来强制调用函数模板
3、函数模板也可以发生重载
4、如果函数模板可以产生更好的匹配,优先调用函数模板

总结:既然提供了函数模板,最好就不要提供普通函数,否则容易出现二义性

模板的局限性

局限性:

  • 模板的通用性并不是万能的

利用具体化Person的版本实现代码,具体化优先调用

template<> bool myCompare(Person &p1, Person &p2){}

总结:

  • 利用具体化的模板,可以解决自定义类型的通用化
  • 学习模板并不是为了写模板,而是在STL能够运用系统提供的模板

类模板

类模板的作用:

  • 建立一个通用类,类中的成员 数据类型可以不具体制定,用一个虚拟的类型来代表

总结:类模板和函数模板语法相似,在声明模板template后面加类,此类称为类模板

类模板与函数模板区别

类模板与函数模板区别主要有两点:

  1. 类模板没有自动类型推导的使用方式
  2. 类模板在模板参数列表中可以有默认参数

总结:

  • 类模板使用只能用显示指定类型方式
  • 类模板中的模板参数列表可以有默认参数

类模板中成员函数创建时机

类模板中成员函数和普通类中成员函数创建时机是有区别的:

  • 普通类中的成员函数一开始就可以创建
  • 类模板中的成员函数在调用时才创建

总结:类模板中的成员函数并不是一开始就创建的,在调用时才去创建。因为只有在调用时才能知道模板所表示的具体类型,去创建实例。

类模板对象做函数参数

学习目标:

  • 类模板实例化出的对象,向函数传参的方式

一共有三种传入方式:

  1. 指定传入的类型 \; —直接显示对象的数据类型
  2. 参数模板化 \;\;\;\;\;\;\; —将对象中的参数变为模板进行传递
  3. 整个类模板化 \;\;\;\; —将这个对象类型 模板化进行传递

使用 typeid().name() 可查看模板代替的类型

总结:

  • 通过类模板创建的对象,可以有三种方式向函数中进行传参
  • 使用比较广泛是第一种:指定传入的类型

类模板与继承

当类模板碰到继承时,需要注意以下几点:

  • 当子类继承的父类是一个类模板时,子类在声明的时候,需指定出父类中T的类型
class Son: public Base<int>
  • 如果不指定,编译器无法给子类分配内存
  • 如果想灵活指定出父类中T的类型,子类也需变为类模板
template<class T1>
class Son2: public Base<T1>
Son2<int> s2

总结:如果父类是类模板,子类需要指定出父类中T的数据类型

类模板成员函数类外实现

学习目标:能够掌握类模板中的成员函数类外实现

总结:类模板中成员函数类外实现时,需要加上模板参数列表

template<class T1, class T2>
void Person<T1, T2>::showPerson(){}

类模板分文件编写

学习目标:

  • 掌握类模板成员函数文件编写产生的问题以及解决方法

问题:

  • 类模板中成员函数构建时机是在调用阶段,导致分文件编写时链接不到

解决:

  • 解决方式1:直接包含.cpp源文件
  • 解决方式2:将声明和实现写在同一个文件中,并更改后缀名为.hpp,hpp是约定的名称,并不是强制

总结:主流的解决方式是第二种,将类模板成员函数写到一起,并将后缀名改为.hpp

类模板与友元

学习目标:

  • 掌握类模板配合友元函数的类内和类外实现

全局函数类内实现 - 直接在类内声明友元即可

friend void printPerson(Person<T1, T2> p){cout << "姓名:" << p.m_Name << "年龄:" << p.m_Age << endl;
}

全局函数类外实现 - 需要提前让编译器知道全局函数的存在

因为是全局函数实现,所以不需要加作用域

总结:建议全局函数做类内实现,用法简单,而且编译器可以直接识别

类模板案例

案例描述:实现一个通用的数组类,要求如下:

  • 可以对内置数据类型以及自定义数据类型的数据进行存储
  • 将数组中的数据存储到堆区
  • 构造函数中可以传入数组的容量
  • 提供对应的拷贝构造函数以及operator=防止浅拷贝问题
  • 提供尾插法和尾删法对数组中的数据进行增加和删除
  • 可以通过下标的方式访问数组中的元素
  • 可以获取数组中当前元素个数和数组的容量

在这里插入图片描述

http://www.laogonggong.com/news/13707.html

相关文章:

  • 如何做自己的公司网站免费网站或软件
  • wordpress 主题白屏seo优化方法有哪些
  • 玉泉营网站建设网站推广系统方案
  • 泰安网络公司协会安徽关键词seo
  • 做货到付款的购物网站企业网站管理系统源码
  • 200 做京剧主题的专业小说网站北京谷歌seo公司
  • 水产网站源码微信附近人推广引流
  • 桂林市中心在哪个区seo经验
  • 网站建设软件公司互联网营销推广
  • 北京市住房城乡建设委门户网站智能识别图片
  • 新余市建设厅网站湘潭网站设计外包服务
  • 做奥迪汽车网站毕业论文企业网络营销顾问
  • 便宜做网站的公司靠谱吗搭建一个网站的流程
  • 昆明市建设局网站磁力岛
  • 兰州市做网站建设的公司正规优化公司哪家好
  • 做设计外包的网站中国营销网
  • 做网站导航按钮怎么做网站建设7个基本流程
  • 重点专业建设验收网站网站建设方案模板
  • 企业微信开发者网站seo招聘
  • 中国科技成就的例子网站seo策划
  • 做私服网站犯法吗广东新闻今日最新闻
  • 北京房产交易网官网轻松seo优化排名 快排
  • jsp商务网站建设最新疫情最新消息
  • 网络卖货怎么卖群排名优化软件
  • 国外校友网站建设的现状什么是seo技术
  • 企业网站产品优化怎么做百度网站登录
  • 选择邯郸网站制作seo顾问服务
  • 西安网站开发公司价格深圳网络营销推广方案
  • 做网站做的网络促销方案
  • 公司网站数据分析公司推广团队