缓冲类实例

来源:互联网 发布:网络三大邪书 编辑:程序博客网 时间:2024/06/07 15:31

表达参数和模板特化的教训学会了如何表达参数可用于参数化模板类

让我们再看看我们以前的缓冲类实例

template <typename T, int nSize> // nSize is the expression parameterclass Buffer{private:    // The expression parameter controls the side of the array    T m_atBuffer[nSize];public:    T* GetBuffer() { return m_atBuffer; }    T& operator[](int nIndex)    {        return m_atBuffer[nIndex];    }};int main(){    // declare a char buffer    Buffer<char, 10> cChar10Buffer;    // copy a value into the buffer    strcpy(cChar10Buffer.GetBuffer(), "Ten");    return 0;}

现在,我们想写一个函数打印出一个缓冲区作为一个字符串。虽然我们可以实现这个作为一个成员函数我们将作为一个非成员函数而不是它因为它将使连续的例子更容易理解

使用模板,我们可以这样写

12345template <typename T, int nSize>void PrintBufferString(Buffer<T, nSize> &rcBuf){    std::cout << rcBuf.GetBuffer() << std::endl;}


0 0