C++提高编程

本文介绍了C++中的模板,包括模板的概念、函数模板和类模板的语法、特点、调用规则,以及类模板实例化和继承中的注意事项。重点讲解了模板的通用性、自动类型推导和与普通函数的区别。
摘要由CSDN通过智能技术生成

一.模板

1.模板的概念

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

模板的特点:

1.模板不可以直接使用,它只是一个框架

2.模板的通用并不是万能的

2.函数模板

C++另一种编程思想称为泛型编程,主要利用的技术就是模板

C++提供两种模板机制,函数模板和类模板

2.1 函数模板语法

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

语法:

1.template<typename T>

2.函数声明或定义

解释:

template---声明创建模板

typename---表明其后面的符号是一种数据类型,可以用class代替

T---通用的数据类型,名称可以替换,通常为大写字母

2.2 函数模板注意事项

注意事项:

1.自动类型推到,必须推导出一致的数据类型T,才可使用

2.模板必须要推导出数据类型T,才可以使用

2.3 普通函数和函数模板的区别

1.普通函数调用时可以发生自动类型转换(隐式类型转换)

2.函数模板调用时,如果使用自动类型推导,不会发生隐式类型转换

3.如果利用显示指定类型的方式,可以发生隐式类型转换

2.4 普通函数和函数模板的调用规则

调用规则如下:

1.如果普通函数和函数模板都可以实现,优先调用普通函数

2.可以通过空模板参数列表来强制调用函数模板

3.函数模板也可以发生重载

4.如果函数模板可以发生更好的匹配,优先调用函数模板

3.类模板

3.1 类模板语法

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

语法:

1.template<typename T>

2.类

解释:

template---声明创建模板

typename---表明其后面的符号是一种数据类型,可以用class代替

T---通用的数据类型,名称可以替换,通常为大写字母

3.2 类模板和函数模板的区别

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

1.类模板没有自动类型推导的使用方式

2.类模板在函数参数列表中可以有默认参数

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

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

1.普通类中的成员函数一开始就可以创建

2.类模板中的成员函数在调用是才可以创建

3.4 类模板对象做函数参数

学习目标:

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

一共有三种传入方式:

1.指定传入的类型 ---直接显示对象的数据类型

2.参数模板化        ---将对象中的参数变为模板进行传递

整个类模板化       ---将这个对象类型模板化进行传递   

3.5 类模板与继承

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

1.当子类继承的父类时一个类模板时,子类在声明时,要指定出父类中T的类型

2.如果不指定,编译器无法给子类分配类型

3.如果想灵活指定出父类中T的类型,子类也许变为模板

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

    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值