脚本宝典收集整理的这篇文章主要介绍了

C++ 模板小技巧

脚本宝典小编觉得挺不错的,现在分享给大家,也给大家做个参考,希望能帮助你少写一行代码,多一份安全和惬意。

C++的模板太有魔性了,根本就是一个编译期语言。不过要做到好用,有用,又不产生垃圾代码确实困难。
虽然还没领悟到精髓,但是以下几个用法个人感觉还是挺不错的。

成员函数扩充

在Go中可以很容易地给任意类型增加方法

    type Integer int
    
    func (a Integer) Less(b Integer) bool {
        return a < b
    }

感觉这个特性十分方便,于是用模板实现了一个类似的功能。

    class Binary: public std::vector<unsigned char>
    {
    public:
    template<typename T>
    bool convertTo(T& value)
    {
        return false;
    }
    };

    template<>
    inline bool Binary::convertTo(String& value)
    {
        for (auto c : *this)
            value.push_back(c);
        return true;
    }

上面的例子中,首先定义了原始数据类型Binary,要读取其中的内容就需要写一个从Binary到特定类型的转换函数。
利用模板特化我们可以将成员函数的实现放在任意位置,且不用修改原来类的定义。

编译期报错

只要在泛型模板里面写入错误的代码。ERROR不需要定义。

    class Binary: public std::vector<unsigned char>
    {
    public:
    template<typename T>
    bool convertTo(T& value)
    {
        //throw error
        ERROR("undefined convert Type");
        return false;
    }
    };

这样一来一旦有人尝试转换成未定义的类型,编译的时候就会报错。

总结

以上是脚本宝典为你收集整理的

C++ 模板小技巧

全部内容,希望文章能够帮你解决

C++ 模板小技巧

所遇到的程序开发问题,欢迎加入QQ群277859234一起讨论学习。如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典网站推荐给程序员好友。 本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。

80%的人都看过