热点:

    C++类模板使用技巧

      [   原创  ]   作者:
    收藏文章 暂无评论

    C++的模板技术由类模板和函数模板共同构成,掌握其用法至关重要。前一节已讲解函数模板,接下来将深入介绍类模板的具体使用方法。

    1、 举例说明

    2、 除了函数模板,还能声明类模板。例如,可用来实现一个堆栈结构。

    3、 只有相同类型类模板T的对象之间才能进行拷贝构造。

    4、 };

    5、 {}

    6、 {}

    7、 {

    8、 }

    9、 {

    10、 }

    11、 {

    12、 }

    13、 {

    14、 }

    15、 {

    16、 }

    17、 定义类模板后,按规范调用其方法即可。

    18、 {

    19、 }

    20、 模板实参可为任意类型,不限于int。

    21、 成员函数在调用时才会被实例化。

    22、 类模板中的静态数据成员在每种实例化类型中都会独立生成一份,不同类型的实例拥有各自的静态成员。静态成员函数与数据成员仅在同一类型实例间共享。

    23、 };

    24、 声明一个类型为A的变量a,这将触发模板类A中针对std::string类型的实例化过程。

    25、 声明三个A类型的对象b、c、d,它们共享类模板特化后的静态成员n和count()函数,其中n被实例化一次,由所有对象共同使用。

    26、 获取类型为int的A类中count函数的返回值,并将其赋给变量n。

    27、 n 等于 b 的计数,调用的是 A 类中的 count 方法。

    28、 必须明确指定模板参数,否则无法确定实例化版本,因此该计数调用方式错误。

    29、 类模板的局部应用

    30、 由于成员函数仅在被调用时才会进行实例化,因此模板参数只需支持实际使用到的操作,而无需具备所有可能的操作。例如,Stack类中定义了一个printOn函数,用于对每个元素调用operator<

    31、 ...

    32、 };

    33、 {

    34、 }

    35、 定义一个存储整数对的栈,由于标准库中的pair未提供输出操作符重载,因此无法直接打印其内容。

    36、 s.printOn(std::cout); // 错误:该元素类型未重载输出运算符<<

    37、 与其通过printOn函数打印对象,不如重载operator<

    38、 ...

    39、 }

    40、 };

    41、 类外定义友元时,若类模板参数不可见,将导致复杂性显著增加。

    42、 可采用两种方式:隐式声明新函数模板,或调整模板参数以实现区分。

    43、 …

    44、 };

    45、 在类外部定义模板,形式为template。

    46、 {

    47、 }

    48、 将友元声明为模板,若其参数含类模板,则需先对该类模板进行前置声明。

    49、 模板类型T在重载operator<

    50、 之后便可将它声明为模板类型T的友元,使其能够访问私有成员。

    51、 …

    52、 };

    53、 在类外部定义模板类型T的实现方法。

    54、 {

    55、 }

    56、 函数仅在调用时才会实例化,即使元素未定义operator<

    57、 栈中存储整数对,由于标准库的整数对未定义输出操作符,因此无法直接输出其内容。需通过其他方式访问和处理栈内元素。

    58、 输出操作符不适用:元素类型未重载operator<<,无法通过std::cout直接打印。

    soft.zol.com.cn true https://soft.zol.com.cn/1099/10992693.html report 2194 C++的模板技术由类模板和函数模板共同构成,掌握其用法至关重要。前一节已讲解函数模板,接下来将深入介绍类模板的具体使用方法。 1、 举例说明 2、 除了函数模板,还能声明类模板。例如,可用来实现一个堆栈结构。 3、 只有相同类型类模板T的对象之间才能进行拷贝构造。...
    不喜欢(0) 点个赞(0)
    随时随地资讯查报价 就上ZOL手机客户端,点击或扫描二维码下载
    立即下载

    Comm Operator

    更新时间:2011年11月24日

    用户评分:0 | 0人点评

    软件类型:共享软件

    软件语言:英文

    Comm Operator
    • 更新时间:2011年11月24日
    • 软件大小:2.6MB
    • 软件分类:编程工具
    • 语言种类:英文
    • 软件评级:0 人点评