-
在类内定义成员函数,在类模板的情况下,并没有什么不同 在类外定义的时候,需要写上template<class T>,与在类的上方写的是一样的,每定义一个成员函数,都要加template<class T>(这里写的只是一种形式而已,并不是class T),同时需要在成员函数的类名后面用尖括号括起来,里面加上相应的参数 在使用的时候,实例化一个对象,需要在类名的后面用尖括号括起来当前这个对象当中是什么数据类型 既然定义的是模板类,所以每个成员函数的前面都要写template<class T>查看全部
-
定义一个类模板就相当于定义了一系列功能相同类型不同的类 定义类模板需要使用关键字template 模板参数既可以是类型,也可以是变量 定义类模板的参数可以使用typename和class,可以混用查看全部
-
定义类模板注意:在类的前面写上template<>,其中含有参数数列表;函数的定义写在内部不需要注意什么,写在外部就要注意,每一个函数在定义的时候都需要加上类前面写的template<>,写完之后还要在类的名字的后面加上<>中的参数,此时的参数不用写类型了查看全部
-
模板代码不能分离编译,都要写在.h文件中查看全部
-
友元函数可以访问类的私有成员变量查看全部
-
函数模板的参数个数可以是一个也可以是多个 使用函数模板时,需要指定模板参数,此时的函数称为模板函数 当需要定义多个功能相同,数据类型不同的函数时,可以使用函数模板来定义 函数模板参数个数如果为0个,则没有必要使用函数模板查看全部
-
模板类型关键字:template typename class,typename和class 的作用是一样的 template <T class> T max(T a,T b){return (a>b)?a:b;} 参数T表明是一种类型, T max(T a,T b)是函数模板 int ival = max(100,90); 括号内都是int类型的,不指定的话,系统自动调用int类型 。此为模板函数 char cval = max<char>('A','B');指定数据类型,传入的类型一定要是指定的类型的参数,此为模板函数 只写函数模板,不写模板函数,系统是不会产生任何代码数据的 通过typename定义模板 template<typename T> void swap(T& a,T& b){} 变量作为模板的参数:template <int size> void display{cout <<size<<endl;} 使用是时候传入的就不是一个数据类型了,而是一个确定的值 display<10>(); 多参函数模板:template<typename T,typename C> void display(T a,T b){} 使用的时候两个参数的类型都要指定出来 int a = 1024;string str = "hello world"; display<int ,string>(a,str); 混用也可以:template <typename C, int size> void display(C a){} display<int , 5>(15); 要注意模板参数与函数的参数没有关系,不用去管它们查看全部
-
运算符重载可以使运算符具有新的功能 运算符重载使用关键字operator ++运算符重载需要区分前置++重载和后置++重载 有些运算符必须使用成员函数重载,有些则必须使用友元函数重载查看全部
-
operator前面可以加&,也可以不加& ,结果都是正确的查看全部
-
<<运算符重载:friend ostream& operator<<(ostream &out,const Coordinate &coor); 实现函数时这样写:ostream& operator<<(ostream &out,const Coordinate &coor){out <<coor.m_iX<<","<<coor.m_iY; return out;} 输出运算符重载只能使用友元函数重载,不能使用成员函数重载,因为第一个是ostream,而成员函数第一个是this指针 operator是关键字,重载运算符的关键字 索引运算符不能采用友元函数重载,友元函数的第一个参数可以是成员函数重载中的this指针,也可以是其他的值,索引运算符的第一个参数必须是this指针,因为只有第一个参数是this指针才能够传入索引,索引才会是表达的当前的对象的当中的成员查看全部
-
一元运算符函数重载,可以括号内可以不写参数 Coordinate::加在&之后 后置++没有使用&符号,后置运算符重载,第一次使用返回的是原来的值,第二次使用值才会发生改变,就行i++一样查看全部
-
总会出现一个问题:头文件声明相互包含。这个错误常常出现,主要是由于互相包含互相调用作为头文件所产生的一个错误,要仔细排查除去多余矛盾的,而不能简单地按照提示猛地去添加。查看全部
-
运算符重载的时候可以用this指针,也可以不用 定义的时候使用引用的好处:取了一次负号,可以再取负号,即为可以多次取用 友元函数的重载,后面的括号内,一定要填写东西,普通函数的重载可以不写查看全部
-
即是重点,又是难点 运算符重载:就是给原先的运算符赋予新的功能 一元运算符:即为符号只与一个操作数进行运算查看全部
-
友元是为了对封装进行补充!这句话真的感受深刻!记得走迷宫程序的时候,由于人的位置、方向等信息与地图类的地图信息处理不好,使得类在被封装后无法共享,那么造成了我一段时间觉得棘手而暂停了写程序。但实际上如果学会利用友元函数,也许我的走迷宫程序不用两天半,只需一天半就可以! ##但必须警惕,数据存在定向暴露的风险###查看全部
举报
0/150
提交
取消