注册 登录
编程论坛 C++教室

模板类中的数组

vfdff 发布于 2008-10-27 00:25, 841 次点击
看到一个模板如下定义:<程序员求职应聘必读 >p82
template <typename T,int size=10> class Base
{
    T m[size];
public:
    void print_size()
    {
        std::cout<<size<<std::endl;
    }
};

这里的 数组  T m[size];中的长度 size 怎么可以不是常数呢 ??

[[it] 本帖最后由 vfdff 于 2008-10-27 00:35 编辑 [/it]]
6 回复
#2
中学者2008-10-27 09:39
模板概念而已...只有实例化时编译器才产生实体代码..
例如: Base<int,30> s;
编译器才会生成int实例的代码,大概这样:
 class Base_int
{
    int m[30];
public:
    void print_size()
    {
        std::cout<<30<<std::endl;
    }
};
#3
sunkaidong2008-10-27 10:39
同意楼上。。。回答的漂亮的。。。
#4
vfdff2008-10-27 12:55
回复 2# 中学者 的帖子
就是这个 实例化 Base<int,30> s;发生在编译期?
#5
中学者2008-10-27 16:25
回复 4# vfdff 的帖子
编译器不在编译期检查清楚,,难道要延迟到连接期.....

最后.希望你以后提问先自己思考实践在问....因为我看你的很多问题都给人你没有思考!
#6
vfdff2008-10-27 18:17
回复 5# 中学者 的帖子
论坛 本来就是 交流讨论的地方
对于编程的水平参差不齐,这个有什么好质疑的呢?
你总不能希望每个人都能像你这么厉害吧!!
#7
sunkaidong2008-10-27 19:18
互相切磋吧。。。其实每个人都有不知道的知识。。互相帮助吧。。。
1