关于C++的template typename<typename T>

关于C++的模板类的相关资料(免费)..........._百度知道
关于C++的模板类的相关资料(免费)...........
提问者采纳
重载错误,不能区别2个重载函数template&typename T&const T& array&T&::operator[](size_t index) const//加上const就能区别了{ if(index&0||index&=size) throw std::out_of_range(index&0?&Negative in订涪斥皇俪郝筹酮船捆dex&:&Index too large&); }//////////////////给你个例子#include&iostream&
class A{public: A():x(4) { } void fun(int b) {
cout && x&& } void fun(int b)const {
cout && x && }};int main() {
const A a.fun(1); A b.fun(1); return 0; }/////////类的非静态成员函数,编译器默认的会在参数列表最左面加上个this指针作为参数,在方法后面加const就是修饰this指针所指向的对象的,当然就this指针就指向对象自己,所以非静态成员方法后面加const的方法就不能改变类中成员变量的值了,同时和非const方法相比,参数类型不同,所以也就满足重载条件了
提问者评价
其他类似问题
您可能关注的推广回答者:
模板类的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁关于C++编程的问题!高分急急急啊_百度知道
关于C++编程的问题!高分急急急啊
学校要求编写员工管理系统:一、 系统概要公司职员的信息管理程序主要实现以下功能:输入员工的姓名,输出该员工的基本信息、级别以及当月工资信息。需求如下。1、 某小型公司,主要由总经理、技术经理和技术人员、销售经理和销售人员。要求存储所有人员的一下信息:姓名、性别、出生年月、技术特长、血型、星座、参加工作时间、接入本公司时间、联系电话、编号、级别、当月薪、计算月薪总额并显示全部信息。2、 人员的编号从1开始,依次递增。3、 程序对所有人员有提升级别的功能。假设所有人员的初始级别均为1级,然后进行升级,总经理升为4级,技术经理和销售经理升为3级,技术人员升为2级,销售人员为1级。4、 月工资计算办法如下:总经理拿固定月薪10000元; 技术经理拿固定月薪6000元加奖金;技术人员拿固定月薪3000元加奖金;销售经理既拿固定月薪也领取销售提成,固定月薪为4000元,销售提成为所辖部门的当月销售总额的5‰;销售人员的月薪按当月销售额的1%提成。5、 考核结果作为升级和工资提成的依据,考核结果按百分制计算。二、 基本功能要求设计一个基类employee,然后派生出technician(技术人员)类、manager(经理)类和saleman(销售人员)类共3类,在此基础上通过继承和派生实现其它类。职员信息要求保存到文件。对部分数据应设置有操作权限。三、 功能描述1、 新进入公司员工基本信息的输入。2、 公司员工基本信息的查询、修改。3、 离开公司员工信息的处理。4、 与员工级别有关的操作。5俯禒碘溉鄢防碉狮冬饯、 与月薪有关的操作。6、 与人员考核有关的操作。看我的要求:1、copy过来的程序坚决不要,我不是不会写2、程序的主类,包括派生类都已经写好了,只需要高手解决我的几个小问题我的问题就是:1、如何找到一个容器,能存储各种类的实例,比如既能存技术人员,也能存技术经理,这个主要是为了能方便的存储和进行查找2、查找函数的编写,以及参数的传递3、等级提升的问题,例如,技术人员在提升等级后变成技术经理,这个怎么实现类的转换
提问者采纳
1.容器用template&class T&class YourClassName 模板类。模板类,可以操作未知的各种类,关于模板类你自己查看相关资料。2.查找函数用 基类employee的指针啦。基类指针可以指向所有的其它派生类的对象。3.类的转换我等下来写一段例子。 //类型转换的demo,VS2005编译通过#include &iostream&class CEmployee//员工{public: CEmployee(const char name[]=&UnKnow&,int laborage=1000); ~CEmployee(); char * GetName(); virtual void PrintInfo();protected: char sName[20]; int nL};class CTechnician:public CEmployee//技术员{public: CTechnician(const俯禒碘溉鄢防碉狮冬饯 char name[]=&UnKnow&,int laborage=2000,int bonus=800); ~CTechnician(); virtual void PrintInfo();protected: int nB//奖金};class CManager:public CEmployee//(经理){public: CManager(const char name[]=&UnKnow&,int laborage=10000); ~CManager(); virtual void PrintInfo(); void operator = (CTechnician &man);//转换时用到protected:};template&typename T1,typename T2&T2 * ChangeType(T1 *name1)//转换函数{ T2* name2=new T2(); (*name2)=(*name1);//一定要先重载=运算符,否则会出错 delete name1; return name2;}int main(){ CEmployee *pE pEmployee=new CEmployee(&wangaochao&); pEmployee-&PrintInfo(); delete pE//用完了删除 CTechnician *pMan=new CTechnician(&dengxiaoqin&); pMan-&PrintInfo(); pEmployee=ChangeType&CTechnician,CManager&(pMan);//由技术员升级为经理 pEmployee-&PrintInfo(); delete pE cin.get();//暂停,以便观察结果 return 0;}CEmployee::CEmployee(const char name[],int laborage){ strcpy_s(sName,20,name);nLaborage=}CEmployee::~CEmployee(){}char * CEmployee::GetName(){ return sN}void CEmployee::PrintInfo(){ cout&&&[员工] 姓名:&&&sName&&& 工资:&&&nLaborage&&}CTechnician::CTechnician(const char name[],int laborage, int bonus):CEmployee(name,laborage){ nBonus= }CTechnician::~CTechnician(){}void CTechnician::PrintInfo(){ cout&&&[技术员] 姓名:&&&sName&&& 基本工资+奖金:&&&nLaborage+nBonus&&}CManager::CManager(const char name[],int laborage):CEmployee(name,laborage){}CManager::~CManager(){}void CManager::PrintInfo(){ cout&&&[经理] 姓名:&&&sName&&& 固定月薪:&&&nLaborage&&;}void CManager::operator =(CTechnician &man){ strcpy_s(sName,20,man.GetName()); //其它的成员如果相同的就可以赋值过来。不需要的就不用管。}/*以下为运行结果[员工] 姓名:wangaochao 工资:1000[技术员] 姓名:dengxiaoqin 基本工资+奖金 2800[经理] 姓名:dengxiaoqin 固定月薪:10000*/
提问者评价
谢谢,很好很强大,我受教了!
其他类似问题
其他2条回答
太难了. 顶! 高手都来帮啊.
很有意思...原来c++也跟C一样好玩
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁右值引用的参数传递疑问(C++0x)_百度知道
右值引用的参数传递疑问(C++0x)
与 int&& a = move(5):,只能是右值(表达式):::move(a))、右值引用变量初始化的时候、还有move返回的是右值引用;}template & 有什么区别:move(b); class T &gt:move(tmp);T&gt?2; swap(T& typename std,[color=#FF0000]如果实参是左值传入[/;color],t是怎样完成初始化的过程:type{ return t?请高手指点下关于右值引用的本质:remove_reference&lt,但是move函数的参数也声明T&& t:template&&#47:1;class T&
b =}问,int a = move(5), T& b){
T tmp(std:,确可以接受左值(引用)和右值;T&& move( T&& t )
&#47,有些疑问比如;
a = std:c++0x增加了右值引用
所以没有“初始化”的问题。 1。
int && a = move(5)这里就分两种情况, 那么a同样是一个引用。2, 效率可能会高一些,上面说的就是根据之前看到的介绍的理解, 因为a本身是个对象实体,所以这里的初始化是拷贝的, 否则一个函数你只能用临时变量调用它,这行为未免太不可理喻了。 尤其是左值引用跟右值引用的具体差别部分还不清楚,解决一个临时变量的引用问题, 这里a就是引用那个返回值, 相当于是给返回值一个名字。 我的感觉是右值引用相当于以前经常写的 const T & t ,
也没兴趣查文档, 引用的是同一个东西。. int a
= move(5) 这里move返回的是一个引用还是一个值都无所谓了, 他就是同一个东西的另一个名字, 如果move返回的是一个引用。 因为没有具体用过这个语法. 右值引用并不是只能指定成右值。 如果move返回的是一个临时变量(按值返回), 这个东西的初始化在它的别名出现之前就已经结束了。 引用又叫别名讨论这种还没有具体实现的语法意义不大
其他类似问题
参数传递的相关知识
按默认排序
其他1条回答
右值引用,mark
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁用2路归并排序法对N个元素进行排序,用C+++语言_百度知道
用2路归并排序法对N个元素进行排序,用C+++语言
用2路归并排序法对N个元素进行排序,用C+++语言编程实现
提问者采纳
2路归并排序法?你是指merge sort?C+++是什么语言?template&typename T&void merge(T a[],int i,int j,int k){int b=i,c=j+1,d=0;T *temp=new T[k-i+1];while(b&=j&&c&=k){if(a[b]&a[c]) temp[d++]=a[b++];else temp[d++]=a[c++];}if(b&=j){while(b&=j) temp[d++]=a[b++];}if(c&=k){whi供鸡垛课艹酒讹旬番莫le(c&=k)temp[d++]=a[c++];}d=0;for(b=i;b&=k;b++)a[b]=temp[d++];delete[]}template&typename T&void msort(T a[],int i,int j){if(j-i&0)else{int mid=(i+j)/2;msort(a,i,mid);msort(a,mid+1,j);merge(a,i,mid,j);}}template&typename T& void merge_sort(T a[],int n){msort(a,0,n-1);}
其他类似问题
按默认排序
其他1条回答
下边是用c++编写的2路归并:将N个数放到A[]中,然后调用merge_sortvoid merge(int left,int mid,int right,int A[],int B[])
//进行一次归并{
int 供鸡垛课艹酒讹旬番莫i,j,k;
j = mid + 1;
while(i &= mid && j &= right )
if(A[i] &= A[j])
B[k++] = A[i++];
B[k++] = A[j++];
while(i &= mid)
B[k++] = A[i++];
while(j &= right)
B[k++] = A[j++];}void mpass(int n,int len, int A[], int B[])
//一趟归并{
int i = 1;
while(i &= (n - 2* len + 1))
merge(i, i + len - 1, i + 2*len - 1, A, B );
i = i + 2 *
if((i + len - 1) & n)
merge(i, i + len - 1, n , A, B);
for(int t = t &= t++)
B[t] = A[t];}void merge_sort(int A[],int n)
//归并排序{
int len = 1;
int B[2000];
while (len & n)
mpass(n, len, A, B);
mpass(n, len, B, A);
归并排序的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁怎么样用C++将矩阵转置?_百度知道
怎么样用C++将矩阵转置?
编写C++程序,将输入的任意大小的矩阵转置~~谢谢了~
提问者采纳
&&&&&&&num[i][j];cout&&&return&&&&&nbsp.&i++)&j++)&&cot++;N;else&&&&}&&nbsp://h;&nbsp.jpg" target="_blank" title="点击查看大图" class="ikqb_img_alink"><img class="ikqb_img" src="&cout&;for(int&&nbsp.&{&&&&&&&&&&num[j][i]&&&nbsp://h;&namespace&&&&/zhidao/wh%3D450%2C600/sign=6d3e15b208d162d985bb6a1824ef85da/ab18f81dba4137fae6cd7b890bb8;for(int&&&&&&&&&&&num[99][99];&i&&&&&&{&&&j&N;&&&&cot=0;&&}<a href="http.int&&&&&&&&&&&&N;&&&&&&&&&&nbsp://h;N;&&&if(cot==N)&&&for(int&&&&&&&&&&&&cin&&&&&N;&&}&&&&&}&&&0;&&&cot=0;N;&&&&}&&&j++)&/zhidao/wh%3D600%2C800/sign=cc061d957d133f3e4bc426e9/ab18f81dba4137fae6cd7b890bb8;&num[j][i]&int&&&j=0;&j=0;&&&&nbsp.jpg" esrc="&&&{&&&&&&&{&nbsp.&&&&int&&&&&nbsp.&&&&main(){&&&&&&&&&j&&&cin&&&&/zhidao/pic/item/ab18f81dba4137fae6cd7b890bb8;&&&&&nbsp.&i=0;&&&&using&&&&&i++)&&;&&&nbsp,&&&&&&iostream&&i&&&&&&for(int&&&nbsp#include&&i=0
提问者评价
其他类似问题
按默认排序
其他1条回答
&&nbsp.setxy(getxy(i;&&v&&&N;v&return&nbsp,N&{&&&&&&template&&&i++)&nbsp,int&&nbsp,N&&j++)&&operator*(Matrix&&&&&&&&&&&&nbsp,int&&}&nbsp,&&&typename&=&Matrix&=&N&&&&T;&&&i&&&nbsp,v);&&&&&printf(&&&&&&&=&&#include&&typename&T;+=&&&&&&&&&&}&nbsp,int&&k++)&}&&1,3&&&operator+(Matrix&&&&&&T;template&&&&for(int&&&&&&&&&&&nbsp,size).setxy(getxy(i;{&nbsp,v);&&&&&&&adv)&&nbsp.print();&nbsp,M;&&}template&&&&&Matrix&&&&&nbsp//transpote转置矩阵#include&&&}&&nbsp,3;&&&&&&&&&&=&&&&&&&&i&&nbsp,N;&nbsp,10};&&&&&&&&&&{&&nbsp,M&i++)&&&&&&nbsp,m;M;}&&&&Matrix&N;&&&&&nbsp,-2;&&&Matrix&&{&&TypePrint(getxy(i;s1*s;&&&&&for(int&0;&nbsp,P&&&&&&=&&&j&&&&&&&&&&nbsp!=(Matrix&&&&&m;&s2&operator==(Matrix&}#define&i&&s1;m;for(int&nbsp,M;&&\n&class&&{&&&&&N;y){&nbsp.setdata(d1;&&&}template&j++)&&&&&}&&&=&&void&&{&&m;&0;0;x;&}&&={&&&int&=&i&&&T;j&&&&&{&&&&&&&&&nbsp,int&&&&{&&&nbsp,N;&&&&&Matrix&&&&=&&&&&&&&nbsp,N&int&y)&&Matrix&&&nbsp,N&gt,N&&}&}&N;&\n&&int&void&}&&&&&&&&&&&&&&&0;&&&&M;Matrix&j&&&&&&&&&&&&&&&&&return&nbsp,-3;Matrix&lt,&&&&nbsp,sizeof(d2));&nbsp,P&&nbsp,5;&&nbsp,M;&x){&N&gt,int&&&&nbsp,j)*y):&&nbsp,N;floatint&&&return&&&&&&=&&&&nbsp,M;}&T;&nbsp.setdata(d2;&&printf(&&&&&&s1;&M;&&(x;&);d1[]&&nbsp,N&&&nbsp,M;&nbsp.print();&&&&nbsp,2&&&&&&&&&0;&&&&&&&%f&}&=&=&&&i&&&&&k&nbsp,j))return&&Matrix&&bool&M;=&s2;&{&&i&&&i&&}&&&&&&&&&&&&}&&&&0;&T,M;&&nbsp:&nbsp,k)*y;&nbsp,int&&&&&&&&s1;&v){&{&&&0,M;&2;&&T;&&nbsp.setxy(i;j++)&&}&&&&&&&&&&&&for(int&&j&i&&&}&&&&&&}&data&N,N&&&&&nbsp,3;&&&&&&s3;&&nbsp,M&for(int&&&&&nbsp,N;&&&&&&&&&&&&&nbsp,sizeof(d1));x;P&&&&&&&&&S&m;&nbsp,N&{&&}&&&nbsp,T&&&&&&&for(int&&amp,N&M;&&&s,0,getxy(i;P;{&nbsp,\t&int&&&2;&&&nbsp.getxy(k.getxy(i;&&&&T;&&&&return&&&&&&nbsp,M;T&&nbsp.setxy(j;&&&nbsp,3;&T;&&&&adv)&&&nbsp,M&T;j&nbsp,P&gt,int&&&&&&&&&&m;&&&&&&);Matrix{T;&&&&{&&&M,2&&}template&&&&T;=&for(int&&for(int&j&for(int&&=&&=&&&&&Matrix&lt,&v);&&;&&&nbsp.getxy(i;&main(){&&&&&N;y]&&&&&&&&&&&&&&i&&&&&operator*(T&;&&};=&0;j&&&&&&&&&v){&&&&&if(getxy(i;&&type&&m;{&&j&&nbsp,Matrix&lt,&&&=&&&&&void&&T&}template&j&&&&}&Matrix&lt.print();&&&&&&&&T;&&&new&&&k&&adv)&&&&&for(int&data[x*N&&&&Matrix&&&T.setxy(i;&{&i++)&0;&&i&&&%d&&&&nbsp,M;&d2[]&m;N;&&&&nbsp!=T;&nbsp,0},j;&T;&&&i&&nbsp,&&&i++)&&typename&3;&&nbsp,j)),M&void&nbsp!=&&&&&&&&&{&&&*&&&&&&&nbsp,N;&&&M;&&&&&&&operator,M;getxy(int&&&&&&&&&&&&&data[x*N+y];&&&&return&m;&i&&&nbsp,2;&&=&nbsp,&&&bool&&}&0;&memcpy(print()&&nbsp,v);&&;&&&&&&&&nbsp,int&0;&&nbsp,3&&&return&N&&&&void&m;&{&&j++)&{&m;&&nbsp.h&&&&&&{&&&&TypePrint(float&Matrix&&&&=&j&=&&&&return&&&&&for(int&&&&&&for(int&&}&&&&&&T;N;&&printf(&s2;&nbsp,int&M;&&&nbsp,j))return&&&&&nbsp,M;&&nbsp,N;x*y,j)-m;i++)&T&&nbsp.h&j&&&nbsp,{&i&&&&&&nbsp,j;j++)&&setxy(int&&&j&nbsp,1;{&&&&&&&&&return&&{&&&&T;&&&j++)&&&M;&&j&&&&&&T[M*N];&&&&&&&&&&Matrix&&return&+&nbsp,j));&&&&nbsp,&&&&TypePrint(int&&&m;&&i++)&x;&{&&&&j++)&&M;=&Matrix&&&&nbsp.getxy(i;&&-4;&&printf(&&&&&&f;&&//转置了&M;&for(int&&&s;&T;&}&&T;&nbsp,3;&&Matrix&&operator*(Matrix&int&&&&&}&&0;&&&&&T;&for(int&&&Matrix&&&int&y;&&&&&&&&nbsp,i;&return&nbsp,N;&T;0;printf(&&&&&&&&&&&&&&{&typename&&&&&nbsp,2;&&nbsp,N&&&nbsp.getxy(i;&TypePrint(T&).transpote();&&void&&&i&&operator-(Matrix&&{&&nbsp,int&&&nbsp,j));&&&&&&&nbsp,M;&&&&&j++)&&M;&&&&f)&x;&&y){&&i++)&&return&&&&&&&&&&&&T;&&getVIndex()&&&&M;}&&for(int&&&nbsp,M&&&&&&&&&amp,N&=&&&&&&nbsp,M;&&&&m;size)&&&&&&for(int&nbsp.print();&{&getHIndex()&&&&nbsp,j));&&N;for(int&&&}&&&nbsp,j);&nbsp.getxy(i;&&&&&&&&&&T;&&}&&0;0;i&s;&&&T&&&&&j&m;m;&T;i++)&&&&nbsp,j));&&&&&&&&&&&&&nbsp,&&&{&&&&&&&j&Matrix&&T&&nbsp,M&&0;&&&&{&&&m;}&Matrix(void){&~Matrix(void){};&&&true.getxy(i;if(getxy(i;setdata(T*&&};j&&&&&&0;&&&i&&&&m;&nbsp,j);typename&&&&0;&0;&nbsp,N&false,M;&&nbsp,j)+&0;&&&return&&&&&transpote()&y;&N;template&s3&&={&adv)&&&&&&&}&&&&nbsp
矩阵转置的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 eq ne gt lt ge le 的文章

 

随机推荐