-
静态数据成员与普通数据成员最大的区别:不依赖于对象,而是在类声明的时候就存在并且独立存在,是该类所特有的一个值。
比如说,我们定义一个学生类,该类有一个静态成员Icount,则该成员便是代表学生类对象数量,初始值为0,每次创建一个学生对象便加1,减少一个学生对象就减去1,始终存在。
静态数据成员的初始化可以直接在类后通过类名进行,如图。
而若想对静态成员变量COUNT进行修改,也只能通过专有的接口——静态函数进行变化,普通的成员函数不能对其操作,这也是静态函数存在的理由。当然,构造函数和析构函数也可以直接对静态成员进行操作,这是为了方便静态成员的使用。——在构造和析构时快捷的对计数用的静态成员进行变化。
查看全部 -
标准模板库:向量
初始化:
vector<T>v1;
vector<T>v2(v1);
vector<T>v3(n,i);
vector<T>v4)(n);
查看全部 -
类模板:template<class T>
template<typename Y, int KSize>
查看全部 -
模板的关键字:template
声明参数:typename 和 class(用来表明数据类型)
template<class T> T max(T a, T b) { return (a>b)?a:b; }//函数模板
查看全部 -
前置/后置++重载:
//前置: Coordinate &operator ++(); Coordinate &Coordinate::operator++() { m_iX++; m_iY++; return *this; } //后置: Coordinate operator++(int); Coordinate Coordinate::operator++(int) { Coordinate old(*this); this->m_iX++; this->m_iY++; return old; }
查看全部 -
Coordinate &operator-();//成员函数符号重载
friend Coorainate &operator-(Coordinate &c);//友元函数符号重载
查看全部 -
静态:static
注意事项:
静态数据成员必须单独初始化;
静态成员函数不能调用非静态成员函数和非静态数据成员;
静态数据成员只有一份,且不依赖对象存在。
查看全部 -
友元类:friend 类名;
注意事项;
友元关系不可传递;
友元关系的单向性;
友元声明的形式以及数量不受限制
查看全部 -
友元全局函数;友元成员函数
查看全部 -
友元函数可以直接访问私有成员;
查看全部 -
map插入没有push_back 方法,用insert方法进行插入
可用键索引,也用用迭代器,迭代器指针指向一个元素为键,第二个为值
map需要分别输出key和value 分别是first second
查看全部 -
map:映射
存储的数据都是成对出现,
具体使用方法:(访问方式和数组类似,map对象名[key])
注意m[“S”]
查看全部 -
list:链表模板
特点:数据插入速度快
每个节点:数据域&指针部分
双链表:既可以从头找到尾,也可尾到头。
插入操作,向量比链表较复杂
查看全部 -
c++标准模板库:
STL:标准模板库
STL:Standard Template Lib
1.vector 向量 (本质:对数组的封装)
特点:读取能在常数时间完成
具体在使用时:
vector<int> ivec1;//初始化一个空的向量 vector<int> ivec2(ivet1); vector<string> svac1; vector<string> svec2(ivec); vetor<int> ivet4(10,-1);//用10个-1这样的元素初始化了ivet4这个向量 vetor<string> svec(10,"hi!"); //用10个这样的字符串元素初始化了ivet4这个向量
查看全部 -
为什么要有模板:
int max(int a,int b){return (a>b)?a:b;} int max(float a,float b){return (a>b)?a:b;} int max(char a,char b){return (a>b)?a:b;} //除了类型不一样其他逻辑都一样 方案:把类型作为参数传进计算机
template<typename T> 函数模版
查看全部
举报