网站托管免费,请人做网站收费多少钱,网站登录密码保存在哪里设置,网页设计与制作的公司#x1f436;博主主页#xff1a;ᰔᩚ. 一怀明月ꦿ ❤️#x1f525;专栏系列#xff1a;线性代数#xff0c;C初学者入门训练#xff0c;题解C#xff0c;C的使用文章#xff0c;「初学」C #x1f525;座右铭#xff1a;“不要等到什么都没有了#xff0c;才下… 博主主页ᰔᩚ. 一怀明月ꦿ ❤️专栏系列线性代数C初学者入门训练题解CC的使用文章「初学」C 座右铭“不要等到什么都没有了才下定决心去做” 大家觉不错的话就恳求大家点点关注点点小爱心指点指点 目录 静态数据成员
静态数据成员的声明
静态数据成员的初始化
静态数据成员的访问
静态成员函数
静态成员函数的声明
静态数据成员函数的访问
友元函数
友元函数的声明 静态数据成员 静态数据成员在内存中只占一份空间而不是每个对象都分别为它保留一份空间它是属于类的但它被类的所有对象所共享每个对象都可以访问这个静态数据成员。若改变它的值则在各对象中这个数据成员的值同时改变了静态数据成员系统单独为它开辟一段空间不属于任何对象程序结束空间才会被释放。 静态数据成员的声明 static 数据类型 变量名; 静态数据成员的初始化 静态数据成员的初始化静态数据成员的初始化一定在类外。 数据类型 类名::变量名初值; 注意不要在类的静态数据成员声明时进行初始化一定要在类外初始化如果没有初始化静态数据成员系统自动给它赋值为0. 静态数据成员的访问 1通过对象名进行访问 对象名.静态数据成员的变量名 2通过类名进行访问 类名::静态数据成员的变量名 注意类的复合复制构造函数默认的复制构造函数并不能处理静态数据成员。需要自己提供的复制构造函数去处理静态数据成员 静态成员函数 静态成员函数的声明 静态成员函数的声明就是在普通的成员函数前面加一个static static 返回类型 函数名(参数列表); 静态数据成员函数的访问 类名::函数名()对象.函数名() 注意 1静态成员函数与非静态的成员函数的根本区别非静态函数有this指针而静态成员函数没有this指针因而静态成员函数不能默认访问本类的非静态数据成员。 当调用一个对象的非静态的成员函数时系统会把该对象的起始地址赋给成员函数的this指针。 2静态成员函数可以直接访问静态数据成员。在C程序中静态成员函数主要是访问静态数据成员不访问静态数据成员 例外 Student s1; int age ;int score ;age和score都是非静态的数据成员 static void print() { Couts1.ages1.scoreendl; } 在当前作用域是合法的。 友元函数 友元函数不是当前类的成员函数而是独立于当前类的外部函数但他可以访问该类对象的任何成员包括私有成员、公有成员和保护成员。 友元函数的声明 友元函数的声明时只要在声明语句的最前面加上关键字friend。 声明可以放在类的任何成员属性里私有部分、公有部分和保护部分 friend 返回类型 函数名(类名 引用名...)friend void print(Student temp); 注意 1声明一个友元函数就可以用这个函数直接访问该类的私有数据从而提高了运行效率。 2友元函数提供了不同类的成员函数之间、类的成员函数与普通函数之间进行数据共享 3一个类的成员函数也可以作为另一个类的友元一个类的成员函数作为另一个类的友元函数时必须先定义这个类作成员函数的类 如果大家还有不懂或者建议都可以发在评论区我们共同探讨共同学习共同进步。谢谢大家