2620程序设计实习内容摘要:

public: void setBaseElement(T arg, int index)。 }。 template class T, int size void baseT,size::setBaseElement(T arg, int index) { elements[index] = arg。 } template class T class son:public basestring, 5{ T elements[5]。 public: void setSonElement(T arg, int index)。 void printElement(int index)。 }。 template class T void sonT::setSonElement(T arg, int index) { elements[index] = arg。 return。 } template class T void sonT::printElement(int index) { coutbasestring, 5::elements[index] “。 coutelements[index] endl。 return。 } sonint sonObj。 类模板从普通类派生 class base{ protected: int size。 string *ptr。 public: base(int length)。 ~base()。 void setBaseElement(string arg, int index)。 }。 base::base(int length) {size = length。 ptr = new string[size]。 return。 } base::~base() { delete [] ptr。 return。 } void base::setBaseElement(string arg, int index) { *(ptr+index) = arg。 } template class TSon class son:public base{ TSon *sonPtr。 public: son(int length)。 ~son()。 void setSonElement(TSon arg, int index)。 void printElement(int index)。 }。 template class TSon sonTSon::son(int length):base(length) { sonPtr = new TSon[size]。 return。 } template class TSon sonTSon::~son() { delete[ ] sonPtr。 return。 } template class TSon void sonTSon::setSonElement(TSon arg, int index) { *(sonPtr+index) = arg。 return。 } template class TSon void sonTSon::printElement(int index) { cout*(ptr+index) *(sonPtr+index)endl。 return。 } sonint test(5)。 普通类从模板类派生 template class T, int size class base{ protected: T elements[size]。 public: void setBaseElement(T arg, int index)。 }。 template class T, int size void baseT,size::setBaseElement(T arg, int index) { elements[index] = arg。 return。 } class son:public basestring, 5{ int elements[5]。 public: void setSonElement(int arg, int index)。 void printElement(int index)。 }。 void son::setSonElement(int arg, int index) { elements[index] = arg。 return。 } void son::printElement(int index) { coutbasestring, 5::elements[index] “。 coutelements[index] endl。 return。 } son sonObj。 类模板  问题的提出  类模板的定义  模板类的概念  定义类模板的成员函数  使用类模板声明对象  类模板的非类型参数  类模板与继承  类模板与友元函数  类模板与静态变量 类模板与友员函数  把普通函数声明为类模板的友员函数  利用类型参数,把模板函数声明为对应模板类的友员函数  把其他类的成员函数声明为类模板的友员函数  利用类型参数,把其他模板类的成员函数声明为对应模板类的友员函数  把普通类声明为类模板的友员类  利用类型参数,把一个模板类声明为对应模板类的友员类 把普通函数声明为类模板的友员函数 template class T, int size class CTemp{ friend void func(int)。 private: T elements[size]。 public: CTemp(T arg)。 }。 void func(int size){ CTempint, size a(10)。 //error: size is a variable CTempint, 50 b(10)。 //ok CTempdouble, 50 c()。 //ok int i。 for(i=0。 i50。 i++) { cout[i]“ ” [i]endl。 } return。 } 利用类型参数,把模板函数声明为对应模板类的友员函数 template class T, int size class CTemp{ friend void func(T arg)。 private: T elements[size]。 public: CTemp(T arg)。 }。 template class T void func(T arg){ CTempT, 50 a(10)。 int i。 for(i=0。 i50。 i++) { cout[i] endl。 } return。 } func(5)。 //ok func()。 //ok template class T void func(T arg){ CTempint, 50 b(10)。 CTempdouble, 50 c()。 int i。 for(i=0。 i50。 i++) { cout[i]“ ” [i]endl。 } return。 } func(5)。 //error: cannot access private member declared in CTempdouble, 50 func()。 //error: cannot access private member declared in CTempint, 50 把其他类的成员函数声明为类模板的友员函数 template class T, int size class CTemp{ friend void myClass::func()。 private: T elements[size]。 public: CTemp(T arg)。 }。 void myClass::func(){ CTempint, 50 b(10)。 CTempdouble, 50 c()。 int i。 for(i=0。 i50。 i++) { cout[i]“ ” [i]endl。 } return。 } 利用类型参数,把其他模板类的成员函数声明为对应模板类的友员函数 template class T, int size class CTemp{ friend void myClassT::func()。 private: T elements[size]。 public: CTemp(T arg)。 }。 template class T void myClassT ::func(){ CTempT, 50 a(10)。 int i。 for(i=0。 i50。 i++) { cout[i]endl。 } return。 } myClassint obj。 ()。 //ok template class T void myClassT ::func(){ CTempT, 50 a(10)。 CTempint, 50 b(10)。 CTempdouble, 50 c(10)。 int i。 for(i=0。 i50。 i++) { cout[i]“ ”。 cout[i]“ ”。 cout[i]endl。 } return。 } myClassint objA。 myClassdouble objB。 ()。 //error: cannot access private member declared in CTempdouble, 50 ()。 //error: cannot access private member declared in CTempint, 50。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。