-
转存
查看全部 -
转存
查看全部 -
转存
查看全部 -
转存
查看全部 -
标准模板库(STL):
向量vector->对数组的封装 元素
迭代器iterator:vector<变量类型>::iterator 迭代器名 = 向量名.迭代器位置
链表list 节点 数据插入速度快 不能通过下标访问每一个元素
映射map
pair,insert
查看全部 -
关键字:template typename class
变量类型作为模板参数:
template <class T>
template<typename T>
变量作为模板参数:
template <变量类型 变量名>
多参数函数模板
template<typename T, typename C>
typename和class可以混用,变量类型模板和变量模板可以一起用
查看全部 -
“-”一元运算符重载:
成员函数重载:类名& operator-();
友元函数重载:friend 类名& operator-(类名 &对象);
“++”一元运算符重载:
前置++符号重载:类名& operator++();
后置++符号重载:类名 operator++(int);
查看全部 -
c++标准模板库:
STL:标准模板库
STL:Standard Template Lib
1.vector 向量 (本质:对数组的封装)
特点:读取能在常数时间完成
empty()返回值类型为bool类型,为空返回ture,非空返回false;
2、迭代器:iterator
citer为vector<string>::iterator 型的变量;
3、list:链表模板
特点:数据插入速度快
每个节点:数据域&指针部分
双链表:既可以从头找到尾,也可尾到头。
插入操作,向量比链表较复杂
4、映射:map
查看全部 -
函数模板的关键字:template class typename(其中后两者相同,class并不是类的定义)
函数模板: 类型模板 template<class T> T display(T a,T b ) { } ;调用的时候: display(100,2);//自动判断或者 display<int>(100,2);
变量作为参数
多参数函数模板
定义出函数模板时,函数模板并不是相互重载的关系,因为在内存中只是将函数模板定义出来,并不能在内存中产生任何代码,只有在使用时才产生相应的函数代码,此时这些函数相互间才能称得上重载关系。
(改自皆凡人)
查看全部 -
1、二元运算符+重载:友元函数重载、成员函数重载
2、成员函数重载:
注释意思是coor2作为operator的参数,this指针为coor1的地址;
3、+号友元函数重载: 参数中可以不加const,但加了之后能确保运算过程参数不发生修改,加const是一致规范;注意与成员函数重载的运算区别;
4、<<友元函数重载:
由此也看出cout是ostream的一个对象; 输出运算符不能使用成员函数重载,因成员函数重载只传入第二个加数,且this指针指向本类,而运用输出运算符重载必须传入一个ostream的对象,故无法使用成员函数重载;
5、索引运算符只能作为成员函数重载,因为友元函数重载的第一个形参可以是this指针也可以是其他的值,但是对于索引运算符来说,它的第一个形参必须是this指针。
查看全部 -
1、静态数据成员并不依赖于对象实例化,且不在构造函数中初始化,而是单独进行初始化,格式为类型+类名::+数据名=初始值,在对象实例化前就存在于内存中;而普通数据成员则是实例化后才存在于内存中;
2、静态数据成员及成员函数可不需实例化后调用;
3、 从this指针谈静态成员函数:调用静态成员函数和静态数据成员时,并不与对象相关,只是与类相关使用静态成员函数,并不会传入一个隐形的this指针,并不知道调用的数据成员是哪个对象的数据成员。所以在静态的成员函数中无法调用非静态的数据成员及函数 ;可以在静态的成员函数中调用静态的数据成员(改自人生赢家daru君)
查看全部 -
1、友元全局函数即将一个全局函数引用至类中,该全局函数可直接访问该类实例化对象中的私有及保护数据成员,格式为friend+函数类型+函数名(参数)+(类引用或指针);
2、友元成员函数即将另一个类中的成员函数引用至本类中,另一个类中的成员函数可直接访问本类中的数据成员;格式为friend+类名::+函数类型+函数名(参数);
查看全部
举报