静态成员,友元函数,友元类

简介: 🐰静态数据成员🌸静态数据成员的声明:🌸静态数据成员的初始化:🌸静态数据成员的访问:🐰静态成员函数🌸静态成员函数的声明🌸静态数据成员函数的访问🐰友元函数友元函数的声明🐰 友元类

🚀🚀🚀大家觉不错的话,就恳求大家点点关注,点点小爱心,指点指点🚀🚀🚀

目录

🐰静态数据成员

🌸静态数据成员的声明:

🌸静态数据成员的初始化:

🌸静态数据成员的访问:

🐰静态成员函数

🌸静态成员函数的声明

🌸静态数据成员函数的访问

🐰友元函数

友元函数的声明

🐰 友元类


🐰静态数据成员

静态数据成员在内存中只占一份空间(而不是每个对象都分别为它保留一份空间),它是属于类的,但它被类的所有对象所共享,每个对象都可以访问这个静态数据成员。若改变它的值,则在各对象中这个数据成员的值同时改变了,静态数据成员系统单独为它开辟一段空间,不属于任何对象,程序结束空间才会被释放。

🌸静态数据成员的声明:

static 数据类型 变量名;

🌸静态数据成员的初始化:

静态数据成员的初始化,静态数据成员的初始化一定在类外。

数据类型 类名::变量名=初值;

注意:不要在类的静态数据成员声明时进行初始化,一定要在类外初始化!!!,如果没有初始化静态数据成员,系统自动给它赋值为0.

🌸静态数据成员的访问:

(1)通过对象名进行访问

对象名.静态数据成员的变量名

(2)通过类名进行访问

类名::静态数据成员的变量名

注意:类的复合复制构造函数(默认的复制构造函数)并不能处理静态数据成员。需要自己提供的复制构造函数去处理静态数据成员

🐰静态成员函数

🌸静态成员函数的声明

静态成员函数的声明:就是在普通的成员函数前面加一个static

static 返回类型 函数名(参数列表);

🌸静态数据成员函数的访问

1. 类名::函数名()
2. 
3. 对象.函数名()

注意:

(1)静态成员函数与非静态的成员函数的根本区别:非静态函数有this指针,而静态成员函数没有this指针,因而静态成员函数不能默认访问本类的非静态数据成员。

当调用一个对象的非静态的成员函数时,系统会把该对象的起始地址赋给成员函数的this指针。

(2)静态成员函数可以直接访问静态数据成员。在C++程序中静态成员函数主要是访问静态数据成员,不访问静态数据成员

例外:

Student s1;

int age ;int score ;age和score都是非静态的数据成员

static void print()

{

   Cout<<s1.age<<s1.score<<endl;

}

在当前作用域是合法的。

🐰友元函数

友元函数不是当前类的成员函数,而是独立于当前类的外部函数,但他可以访问该类对象的任何成员,包括私有成员、公有成员和保护成员。

友元函数的声明

友元函数的声明时,只要在声明语句的最前面加上关键字friend。  声明可以放在类的任何成员属性里(私有部分、公有部分和保护部分)  

1. friend 返回类型 函数名(类名 &引用名...)
2. 
3. friend void print(Student &temp);

注意:

(1)声明一个友元函数,就可以用这个函数直接访问该类的私有数据,从而提高了运行效率。

(2)友元函数提供了不同类的成员函数之间、类的成员函数与普通函数之间进行数据共享

(3)一个类的成员函数也可以作为另一个类的友元,一个类的成员函数作为另一个类的友元函数时,必须先定义这个类(作成员函数的类)

🐰 友元类

这种友元类的说明方法是在另一个类声明中加入语句”friend 类名;”,此语句可以放到公有部分,也可以放到私有部分或保护部分

1. class B
2. {
3.     ...
4. };
5. class A
6. {
7.     friend B;
8.     ...
9. };

这样B就是A的友元类,友元类B所有的成员函数都是A的友元函数,可以访问A类的对象中的任何成员。

关于友元,有以下注意:

(1)友元函数的声明可以出现在类的任何地方,也就是说友元的声明不受成员访问符的限制

(2)友元关系是单向的不是双向的,如果声明了B类是A类的友元类,不一定A类是B类的友元类,A类的成员函数不一定能够访问B类中的成员

(3)友元关系是不能传递的,例如,如果说B类是A类的友元类,C类是B类的友元类,并不能说C类就是A类的友元类。

 

🌸🌸🌸如果大家还有不懂或者建议都可以发在评论区,我们共同探讨,共同学习,共同进步。谢谢大家! 🌸🌸🌸  



相关文章
|
1月前
|
安全 C++
友元函数
友元函数
13 0
|
4月前
|
C++
C++友元函数和友元类的使用
C++中的友元(friend)是一种机制,允许类或函数访问其他类的私有成员,以实现数据共享或特殊功能。友元分为两类:类友元和函数友元。类友元允许一个类访问另一个类的私有数据,而函数友元是非成员函数,可以直接访问类的私有成员。虽然提供了便利,但友元破坏了封装性,应谨慎使用。
|
5月前
|
存储 数据安全/隐私保护 C++
C++一分钟之-C++中的静态成员与静态函数
【6月更文挑战第20天】在C++中,静态成员(变量&函数)打破对象实例化规则,提供类级共享。静态变量独占一份,用于计数或共享配置,需类外初始化,注意访问权限。静态函数不依赖对象,直接通过类名调用,不使用`this`指针,适合工具函数或操作静态变量。示例展示了静态成员的使用,强调了理解和避免常见问题的重要性。
53 4
|
6月前
|
设计模式 缓存 编译器
【C++友元函数】深入探索C++友元函数:从基础到应用
【C++友元函数】深入探索C++友元函数:从基础到应用
120 0
|
11月前
|
编译器 C++
类和对象:初始化列表,静态成员,友元,内部类,匿名对象
类和对象:初始化列表,静态成员,友元,内部类,匿名对象
|
存储 C++
C++静态成员和友元成员的理解
C++静态成员和友元成员的理解
177 0
C++静态成员和友元成员的理解
|
存储 编译器 C语言
【三、类中的静态成员】静态成员变量与静态成员函数(static关键字、this指针)
【三、类中的静态成员】静态成员变量与静态成员函数(static关键字、this指针)
155 0