-
static静态
static int s_iCount; //静态数据成员 static int getCount(){return s_iCount;} //静态成员函数
【静态数据成员】不依赖于对象,而是依赖于类(即使不实例化,静态数据成员在内存中仍然存在),不是在构造函数中实例化,而是单独进行
//静态数据成员的实例化 class Tank{ ... }; int Tank::s_iCount=0; //不要再写static关键字了
访问方法:两种
//直接通过类,不通过对象 cout<<Tank::getCount()<<Tank::s_iCount<<endl; //通过实例化的对象 Tank tank; cout<<tank.getCount()<<tank.s_iCount<<endl;
【注意事项】
1、静态数据成员必须单独进行初始化
2、静态成员函数不能调用非静态的成员函数和非静态的数据成员
3、静态数据成员只有一份,且不依赖对象而存在
查看全部 -
class Circle; //声明Circle类 class Coordinate{ friend Circle; //将Circle声明为Coordinate的友元类 //可以在Circle类中定义一个Coordinate的对象,并通过这个对象任意地访问Coordinate的私有数据成员和成员函数 public: private: }; //在Circle.h中 class Circle{ public: void printXY(){ cout<<m_coor.m_iX<<m_coor.m_iY; } private: Coordinate m_coor; };
【关于友元的注意事项】
1、友元关系不可传递
2、友元关系的单向性
3、友元声明的形式和数量不受限制
4、友元只是封装的一种补充(不是一个很好的语法,是不得已而为之的语法):友元破坏了封装性
查看全部 -
void display(Coordinate coor);//传对象 void display(Coordinate &coor);//传引用
传引用 效率更高,因为传对象 会创建临时变量
查看全部 -
友元全局函数:访问私有的数据成员和成员函数
class Time{ friend void printTime(Time &t); //友元全局函数,跟public、private等不形成约束,可以写在这,也可以写在public、private、protected下面(没影响) //但是建议写在这里(最前面) public: Time(int hour,int min,int sec); private: int m_iHour; int m_iMinute; int m_iSecond; }; //在main.cpp中 void printTime(Time &t){ cout<<t.m_iHour<<t.m_iMinute<<t.m_iSecond<<endl; } //m_iHour等都是在privtae下面定义的,如果不用友元函数,则程序无法执行
友元成员函数:
//在Match.h中 class Time; //用到了Time类型的&t class Match{ public: void printTime(Time &t) //在public里面 }; //在Time.h中 #include "Match.h" //用到了Match::printTime class Time{ friend void Match::printTime(Time &t); public: private: }; //在Match.cpp中 #include "Match.h" #include "Time.h" void Match::printTime(Time &t){ cout<<t.m_iHour<<t.m_iMinute<<t.m_iSecond<<endl; } //在main.cpp中 Time t(6,34,25); Match m; m.printTime(t);
查看全部 -
好查看全部
-
模板类不能分开编译查看全部
-
const本质是给隐藏指针this加const;而static没有this指针
所以static不能加const
静态数据成员直接初始化,不能在类的构造函数中初始化,因为静态成员不依赖对象而存在,且只有一个。
查看全部 -
静态成员函数只能访问静态数据成员和调用静态成员函数
查看全部 -
键值的写法
查看全部 -
迭代器的写法
查看全部 -
111111111111
查看全部 -
vector常用函数
查看全部 -
111111
查看全部 -
类外定义的写法
查看全部 -
类模板的写法
查看全部
举报
0/150
提交
取消