一、友元函数
1.定义在类的外面,可以访问类的保护和私有成员。不是成员函数。
2.友元可以是一个函数,叫友元函数。也可以是一个类,叫友元类。
3.友元类时,整个类及其所有的成员都是友元。
关键字:friend
4.作用:让类外数据突破访问权限的限制。
#include <iostream> using namespace std; // 定义一个类 class A{ double width; public: friend void print(A a); //函数显示 void set_print(double wid) { width = wid; } }; void print(A a) { cout << "width: "<< a.width<<endl; } int main() { A pos; //数据写入 pos.set_print(23.1); // 函数验证 print(pos); return 0; }
二、C++类 的静态成员
1. 静态成员分为 静态成员变量和 静态成员函数
2.静态成员变量
(1.)静态成员变量
静态成员变量在成员变量声明前,加static。
在类外初始化,默认初始化为0。而且调用默认构造函数
class Run{
public:
static int run_age; //静态变量
int run_user; // 实例变量
public:
func{
int run_local; // 局部变量
};
};
// 需要在类外进行初始化
int Run::run_age = 0;
(2)静态成员在类的所有对象中是共享的,使用时要用::(范围解析运算符)
3.静态成员函数
(1).是指在成员函数声明前加static,静态成员函数只能访问静态成员变量,不能访问成员变量。
静态成员函数与普通成员函数的区别:
class B{
public:
static int num;//静态成员变量
static void show(){......}//静态成员函数 静态成员函数是没有this的
};
// 类外初始化
int B::num = xxx;
#include <iostream> using namespace std; class B{ public: static int num; static int print() { return num; } void set_len(int c) { len = c; num ++ ; } private: int len; }; int B::num = 10; int main () { B pos; // 先输出查看静态的值 cout << pos.print() <<endl; // 改变参数, pos.set_len(5); cout <<pos.print()<<endl; // 静态的值发生了 改变 return 0; }