-
模板类,只能写在h文件中,不能申明在h,定义在cpp。查看全部
-
for(;itor!=vec.end();itor++) vec.end()不是vec的最后一个元素,而是最后一个元素的下一个位置。。。。这个和vec.bgin()是不同意义的。。查看全部
-
静态数据成员与成员函数注意事项查看全部
-
//前置-- coordinate & operate--() {查看全部
-
swap(int& a,int& b)查看全部
-
静态数据成员注意事项查看全部
-
vector<int>::iterator iter = vec.begin(); iter可理解为一个指针,它指向了向量容器vec的第一个元素采用的begin()方法來實現的。 vector<int>::iterator iter = vec.begin(); vector<int>::是爲了說明迭代器是整形的向量容器。iterator 是迭代器关键字,iter 是被iterator关键字修饰后的“指针变量”,之后iter会拿到,vec容器内第一个元素的值。 最后输出这个这指针的值。cout<< *iter <<endl;//所以iter说他是个指针。。。查看全部
-
模板函数 模板类 标准模板类查看全部
-
标准函数 标准类查看全部
-
包含多个参数的类模板(类外定义),每一个成员函数前都要写上template代码。 1. 模板代码不能分离编译(类的声明与定义都要写在.h文件中)。 2. 类模板类外定义,每一个成员函数前都要写上template<typename T, int KSize>查看全部
-
static注意事项: 1.静态数据成员不依赖构造函数初始化,必须在类外单独初始化(因为它不是随着对象的产生而产生(即不是依赖构造函数初始化),而是随着类的产生而产生(即类产生后未实例化对象时它在内存中已经存在),而此时对象还未产生所以不依赖构造函数) //普通的数据成员和成员函数依赖于对象(即依赖构造函数初始化),创建对象后才存在 2.静态成员函数不能调用非静态成员函数和非静态数据成员 反之非静态成员函数能调用静态成员函数和静态数据成员及非静态的方法和属性(因为静态的成员函数不隐含this指针,无法知道去找哪个对象) 3.静态成员函数的声明和定义,声明的时候有static 关键字,定义时没有该关键字;静态数据成员前面也加关键字static 4.静态数据成员只有一份,且不依赖对象而存在(因为用sizeof求对象大小时不包含静态数据成员) 5.访问静态数据成员及静态成员函数时用类名Tank::getCount(),此时是初始化的值;用实例化对象t访问静态数据成员及成员函数时t.getCount(); 静态成员函数不能修饰为const,const的本质是对非静态成员函数隐含的this指针指向的值加以修饰。而静态成员函数不隐含this指针。查看全部
-
1. 函数模板的关键字:template class typename(其中后两者相同) 2. 函数模板: 类型模板 template<class T> T display(T a,T b ) { } 调用的时候: display(100,2);自动判断//或者 display<int,int>(100,2); 变量作为参数 template<int size> { } 多参数模板 template<class A,calss B> void display(A a, B b) {} {} 2. 定义出函数模板时,函数模板并不是相互重载的关系,因为在内存中只是将函数模板定义出来,并不能在内存中产生任何代码,只有在使用时才产生相应的函数代码,此时这些函数相互间才能称得上重载关系。查看全部
-
typename和class可以混合使用,例如:template<typename T, class Y>查看全部
-
索引运算符重载不能使用友元函数的形式进行重载,因为索引运算符传入的第一个参数一定要是this指针,即当前对象的指针,否则无法实现实现重载。 重载<<时,只能使用友元函数进行重载,而不能通过成员函数来重载,因为<<的重载要求要有两个传入的参数,且其中一个的类型张必须是ostream&的,而如果使用成员函数来重载的话,则一定会隐形的传入一个this指针。查看全部
-
*静态成员是类的成员,不是对象的成员; *静态成员函数不能直接访问非静态函数,普通成员函数可以调用静态函数。 *静态成员函数访问静态数据成员的方法:类名::静态成员名 || 对象名.静态成员名 || 对象指针->静态成员名 *静态成员函数没有this指针 */查看全部
举报
0/150
提交
取消