类模版的实例化过程
定义类模版后,再定义类模版的对象具体过程为
1。编译程序将类模版实例化成模版类,
2。在运行时实例化成对象。
比如
template<typename T,int n>class Array{
public:
Array();
~Array();
protected:
int size;
T* element;
};
template<typename T,int n>Array<T,n>::Array(){
if(n>1)size=n;
else size=1;
element=new T[size];
}
template<typename T,int n>Array<T,n>::~Array(){
delete [] element;
}
书上说编译器将定义语句Array<int ,5> intary;编译后,实际生成如下类
public:
Array();
~Array();
protected:
int size;
T* element;
};
我的问题是:n怎么不见了呢?运行时到哪儿去找n呢,也就是当类模版存在非类型参数时,到底如何编译的,编译器
如何处理非类型参数生成的,生成的模版类的形式是怎样的。
如果是生成如下形式
public:
Array(int n=5);
~Array();
protected:
int size;
T* element;
};
好像也有问题,这样岂不是定义对象要提供初值了,类模版中的构造函数并不需要初值啊
1。编译程序将类模版实例化成模版类,
2。在运行时实例化成对象。
比如
template<typename T,int n>class Array{
public:
Array();
~Array();
protected:
int size;
T* element;
};
template<typename T,int n>Array<T,n>::Array(){
if(n>1)size=n;
else size=1;
element=new T[size];
}
template<typename T,int n>Array<T,n>::~Array(){
delete [] element;
}
书上说编译器将定义语句Array<int ,5> intary;编译后,实际生成如下类
public:
Array();
~Array();
protected:
int size;
T* element;
};
我的问题是:n怎么不见了呢?运行时到哪儿去找n呢,也就是当类模版存在非类型参数时,到底如何编译的,编译器
如何处理非类型参数生成的,生成的模版类的形式是怎样的。
如果是生成如下形式
public:
Array(int n=5);
~Array();
protected:
int size;
T* element;
};
好像也有问题,这样岂不是定义对象要提供初值了,类模版中的构造函数并不需要初值啊
...全文
相关推荐
J2ME飞机游戏程序模版
一个飞机游戏的程序模版,有助于编写飞机游戏的程序
java实例化对象的过程
java实例化对象的过程
python类的实例化问题解决
类的实例化问题解决 运行结果: line 21, in <module> s=speaker('ken',10,'aaa') TypeError: __init__() missing 1 required positional argument: 'h' 错误要点:定义类的时候是四个参数,在实例化的时候也必须是四个,不能因为用不到而不写。 这是因为:类定义了 __init__() 方法,类的实例化操作会自动调用 __init__() 方法。实例化和定义的不匹配,当然报错了。 您可能感兴趣的文章:Python面向对象程序设计中类的定义、实
简单了解java类的初始化以及类的实例化
主要介绍了简单了解java类的初始化以及类的实例化,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
java实现数组实例化一个类
用java语言编写,实现了一个student类,定义了三个属性,并写了set和get 方法,最后用数组实例化这个类。


