-
传入引用 更快
查看全部 -
template typename class
class表明数据类型
查看全部 -
<< 返回值必须是ostream& !!!
查看全部 -
前置++与后置++比就是后置有个参数
Coordinate &operator++();
Coordinate &operator++(int);
查看全部 -
7查看全部
-
<< 运算符重载必须是友元函数
查看全部 -
迭代器遍历
查看全部 -
向量的常用函数
查看全部 -
Watch(Time &t):m_tTime(t){} 构造函数,打破僵化思维:1.定义的类也可以作为参数的数据类型来使用;2.参数是引用时,传入的参数为对象名而不是地址。
查看全部 -
标准模板库STL
1、vector向量
特点:读取能在常数时间完成
初始化vector对象的方法:
vector<T> v1:保存类型为T的对象。默认构造函数v1为空
vector<T> v3(n,i):v3包含n个值为i的元素
遍历向量:可用迭代器
格式
vector vec; vector<string>::iterator citer=vec.begin(); for(;citer!=vec.end();citer++) //end()为向量最后一个元素的下一个位置 {cout<<*citer<<endl;}
2、list链表模板
特点:数据插入速度快
也可通过迭代器进行遍历访问
3、map映射模板
key->value
map<string,string>m; pair<string,string>p1("s","shanghai"); pair<string,string>p2("b","zhengzhou"); m.insert(p1); m.insert(p2); cout<<m["s"]<<endl; cout<<m["b"]<<endl;
查看全部 -
类模板
模板代码不能分离编译
查看全部 -
函数模板template关键字:运算过程相同,数据类型不同
1、函数类型作为模板:
举例:class
template<class T>//class不是类的意思,只是用T做函数类型 T max(T a,T b) { return(a>b)?a:b; }
函数模板不使用时不产生数据。
举例:typename
template<typename T> void swap(T& a,T& b) { T tmp=a; a=b; b=tmp; }
注:typename与class可以混用
2、变量作为模板参数:
template<int size> void display() { cout<<size<<endl; } //使用 display <10>();
3、函数模板与重载:
查看全部 -
二元运算符重载:运算符对应的操作数有两个
典例:“+”运算符的重载
成员函数重载实现://Coordinate类为例
Coordinate operator+(const Coordinate &coor)
{Coordinate t; t.m_iX=this->m_iX+coor.m_iX;
t.m_iY=this->m_iY+coor.m_iY; return t; }
友元函数重载:
friend Coordinate operator+(const Coordinate &c1,const Coordinate &c2);
输出<<符号的重载:
注意函数返回值一定要是 ostream&
查看全部 -
运算符重载:给原有的运算符赋予新功能
运算符重载本质:函数重载
一元运算符:这个符号只与一个操作数进行运算
举例:“-”的重载
成员函数重载实现“-”重载:关键字operator
类名& operator(); //实现时用函数实现
友元函数重载实现“-”重载:
freind 类名& operator-(类名 &引用名); //其返回值也是类的一个引用
实现时返回*this。
重载前置++与后置++
区分:Coordinate operator++();//前置++
Coordinate operator++(int);//后置++
查看全部 -
C++中的静态Static
静态数据成员与静态成员函数:
静态数据成员不依赖于对象实例化存在,所以静态数据成员不在构造函数中实例化,它的实例化往往是单独进行的
静态数据成员可通过类直接访问 类名::数据成员名
实例化一个对象时,普通数据成员数量会随实例化对象的数量改变,而静态数据成员只有值发生变化,个数不会变化。
普通成员函数或数据成员可以调用静态的,但静态的不可以调用普通的。
从this指针角度看静态成员函数:
静态成员函数并不会传入一个隐形的this指针,则无法区分调用的数据成员是哪一个对象的数据成员,故在静态成员函数中无法调用非静态数据成员或成员函数。
Static的注意事项:
a、静态数据成员必须单独初始化
b、静态成员函数不能调用非静态成员函数和数据成员
c、静态数据成员只有一份,并且不依赖对象而存在
查看全部
举报