我是靠谱客的博主 鲜艳电灯胆,最近开发中收集的这篇文章主要介绍第七章 习题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、名词解析

函数模板:一个带类属参数的函数。
类模板:一个带类属参数的类。
模板函数 :通过参数实例化可以再构造出具体的函数。
模板类:通过参数实例化可以再构造出具体的类。


二、填空题

(1)C++支持两种模板,一种是 函数模板 ,另一种是 类模板
(2)关键字 template 是定义模板的关键字。
(3)<模板参数>中包含一个或多个用逗号分开的模板参数项,每一项由保留字 class 或者 typename 开始。
(4)重载函数模板便于定义 类属参数 或者函数参数的类型、个数不相同所进行的 类似 操作。
(5)函数模板实例化时, 没有 普通传值参数的类型转换机制。
(6)STL提供的容器是常用数据结构的 类模板
(7)STL容器类库包含7种基本容器。他们可以分成两组: 顺序容器关联容器
(8)STL迭代器主要包括5种基本类别: 输入迭代器输出迭代器前向迭代器双向迭代器随机访问迭代器


三、选择题(至少选一个,可以多选)

(1)关于函数模板,描述错误的是(A

A、函数模板必须由程序员实例化为可执行的模板函数
B、模板函数的实例化有编辑器实现
C、一个类定义中,只要有一个函数模板,则这个类是类模板
D、类模板的成员函数都是函数模板,类模板实例化后,成员函数也随之实例化

(2)下列模板说明中,正确的是(A

A、template<typename T1,typename T2>
B、template<class T1,T2>
C、template(class T1,class T2)
D、template(typename T1 ,T2)

(3)假设有函数模板定义如下:
template
Max(T a,T b, T&c)
{c=a+b;}
下列选项正确的是(AB

A、float x ,y ;float z;
Max(x ,y ,z);

B、int x,y,z;
Max(x,y,z);

C、int x,y;float z;
Max(x,y,z);

D、float x; double y ,z;
Max(x,y,z);

(4)建立类模板对象的实例化过程为(C

A、基类 ——>派生类
B、构造函数——>对象
C、模板类——>对象
D、模板类——>模板函数

(5)下面(ABD)是标准模板库中的主要组件。

A、容器
B、迭代器
C、文件
D、算法


四、判断题

(1)一个模板函数能够被相同函数名的另外模板函数重载。 (
(2)作为模板类型参数的关键字class,特别含义是“任何用户定义类的类型”。 (
(3)在类模板<模板参数表>中,必须至少有一个类参数。 (
(4)在类模板<模板参数表>中,可以使用函数类型参数,该参数与普通函数参数的用法和功效完全相同。 (
(5)迭代器就是我们平常所用的指针。 (


五、程序设计题

(1)用函数模板实现求整数实数平方根的程序。

编写程序如下:

#include <iostream>
#include <cmath>
using  namespace std;
template <typename T>
T kaifang(T a)
{
    T c;
    c=sqrt(a);
    return c;
}
int main( )
{
    int x=kaifang(36);
    cout<<"整数36的平方根为:"<<x<<endl;
    double y=kaifang(2.56);
    cout<<"实数2.56的平方根为:" <<y<<endl;
    return 0;
}

程序输出结果如下:
这里写图片描述

(2)设计一个类模板,然后将该类模板实例化为整数型和字符观类。利用类模板的成员函数为其数据成员赋值,并显示所赋给的值。

#include <iostream>
using  namespace std;
template <typename numtype>
class Classtemple
{
    public:
        void setdata(numtype x, numtype y)
        {
            a=x;b=y;
        }
        void dispdata()
        {
            cout<<"first number is "<<a<<endl;
            cout<<"second number is "<<b<<endl;
        }
    private:
        numtype a,b;
};
int main( )
{
    Classtemple<int> intobj;
    intobj.setdata(30,40);
    cout<<"整数类的两个数据成员为:"<<endl;
    intobj.dispdata();
    Classtemple<char> charobj;
    charobj.setdata('8','9');
    cout<<"字符类的两个数据成员为:"<<endl;
    charobj.dispdata();
    return 0;
}

运行结果:
这里写图片描述

最后

以上就是鲜艳电灯胆为你收集整理的第七章 习题的全部内容,希望文章能够帮你解决第七章 习题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部