测试代码如下:
#include <bits/stdc++.h>
using namespace std;
class Base{
public:
int num;
public:
friend void operator+(const Base &ob1,const Base &ob2);
Base(){}
Base(int num){
this->num=num;
}
~Base(){}
};
void operator+(const Base &ob1,const Base &ob2){
cout<<ob1.num+ob2.num<<endl;
}
template<class T>//类模板用class
class Test: public Base
{
template<typename T1>
friend ostream& operator<< (ostream &out, Test<T1> ob);
private:
T* arr;
int capacity;
int size;
public:
Test(){
capacity=5;
size=0;
arr=new T [5];
memset(arr,0,capacity*sizeof(T));
}
Test(int capacity){
this->capacity=capacity;
this->size=0;
arr=new T [capacity];
memset(arr,0,sizeof(T)*capacity);
}
Test(const Test &ob){
capacity=ob.capacity;
size=ob.size;
arr=new T [capacity];
memcpy(arr,ob.arr,sizeof(T)*capacity);
}
~Test(){
if(arr!=NULL){
delete [] arr;
arr=NULL;
}
capacity=0;
size=0;
}
};
//函数作为类模板的友元,用typename
template<typename T1>
ostream& operator<< (ostream &out,Test<T1> ob){
out<<"capacity:"<<ob.capacity<<" size:"<<ob.size<<endl;
return out;
}
int main(){
Base ob1(1);
Base ob2(2);
Test<int> ob3(10);
cout<<ob2.num<<ob1.num<<endl;
cout<<ob3<<endl;
return 0;
}

被折叠的 条评论
为什么被折叠?



