- 友元函数可以访问对象的私有部分
友元有3种:- 友元函数
- 友元类
- 友元成员函数
- 友元函数不使用类限定符
- 友元函数即使不改变参数, 一般也不在后面加 const
对于成员函数来说, 一个操作数通过this指针隐式传递, 另一个操作数作为函数参数显式传递; 对于友元函数, 两个操作数都作为参数传递. 例如:
Time operator+(const Time &t) const; friend Time operator+(const Time &t1,const Time & t2);
- 状态成员描述的是对象所处的状态
只接受一个参数的构造函数定义了从参数类型到类类型的转换. 如果使用关键字
explicit
限定了这种构造函数, 则它只能用于显式转换, 否则也可用于隐式转换.Stonewt myCat; myCat = 19.6; // 如果 Stonewt(double) 是 explicit 声明的,这不合法 myCat = Stonewt(19.6); // 显式转换 myCat = (Stonewt)19.6; // 旧版本的显式转换
然而, 当且仅当转换不存在二义性时, 才会进行这种二步转换. 也就是说, 如果这个类还定义了构造函数
Stonewt(long)
, 则编译器拒绝这些语句, 可能指出: int 可被转换为 long 或 double, 因此调用存在二义性.使用指针表示对象姓名时不会分配内存空间. 这是很久以前的知识了.
int * arr; // 没有内存之间, 只是一个指针 int arr[10]; // 有内存空间
静态类成员
static
特点: 无论创建了多少对象, 程序都只创建一个静态类变量副本. 也就是说, 类的所有对象都共享同一个静态成员.
C++类学习笔记
猜你喜欢
转载自www.cnblogs.com/count0/p/10926463.html
今日推荐
周排行