模板函数中定义形参默认值为自定义类时如何声明


起因:

在写模板类时,有一个函数,其中的一个形参是自定义类的引用,目的是作为返回数据,供调用者使用。

可是,有时候调用者并不需要使用这个返回值,纯粹是仅仅实现其过程即可。如果为了使用该函数,还不得不定义一个变量来接这个返回值,比较麻烦。所以,为了简化调用,想要使用默认的形参。

可是,一开始在声明函数时,总是反应类型不匹配,无法使用。找了一些网站,也经过google,都没有找到解决的办法。

后来,自己设想,编译器的要求是类型匹配,那我就自己new一个对象,然后供函数使用即可。但是,单纯的new一个,因为是指针类型,依然与引用的类型不匹配的,所以就用一个(*指针)操作,来使其类型匹配上。形式如下

T& t= (*(new T))

经过如此,经过编译器,能正常使用。

类中函数声明的代码如下(斜体部分就是声明的):

```

template

classCLinkList

{

public:

       CLinkList();

       CLinkList(CLinkList&list);

       ~CLinkList();

public:

       int    insertNode(constintpos,constT&t);

       int    deleteNode(constintpos,T&t= (*(newT)));

       int    getNode(constintpos,T&t);

       intclear();

       intgetSize();

       boolisEmpty();

protected:

       intm_size;

       Node m_header;

};

```

函数和类的其余部分,都不用变化

你可能感兴趣的:(模板函数中定义形参默认值为自定义类时如何声明)