是不是实用了模板之后,C++的类在定义带参数的构造函数时,不一定要定义不带参数的构造函数?

如上,我发现使用了模板之后,竟然可以不用定义不带参数的构造函数,倘若是在平时,一定会出现编译错误,说找不到合适的默认构造函数。为什么?楼下的,不要这样好吧...乱回答..... 如上,我发现使用了模板之后,竟然可以不用定义不带参数的构造函数,倘若是在平时,一定会出现编译错误,说找不到合适的默认构造函数。为什么?
楼下的,不要这样好吧...乱回答....我问的是模板....真郁闷....
不知二楼的在讲什么....乱七八糟....
展开
 我来答
上上西
2010-12-10 · TA获得超过346个赞
知道小有建树答主
回答量:386
采纳率:0%
帮助的人:0
展开全部
不管是模板类还是普通的类,如果你没有定义带参数的构造函数,那么编译器会为你隐含的实现一个没有参数的默认构造函数(这个默认构造函数什么都不做),但如果你定义了一个带参数的构造函数,编译器就不再为你创建一个默认的构造函数了,先拿普通的类来说:
#include <iostream>
using namespace std;

class CTest
{
public:
CTest(int val)
{
m_nVal = val;
}

private:
int m_nVal;
};

int main()
{
CTest test(8);
}
编译运行都没有问题,但是如果你写成CTest test;就不行了,没有默认构造函数了。模板类是一样的道理,所以问题不在这里,如下程序同样编译运行通过:
#include <iostream>
using namespace std;

template<typename T>
class CTest
{
public:
CTest(T val)
{
m_nVal = val;
}

private:
T m_nVal;
};

int main()
{
CTest<int> test(7);
}
但是如果你写CTest<int> test是不行的,编译不通过。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式