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

这篇具有很好参考价值的文章主要介绍了静态成员,友元函数,友元类。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

🐶博主主页:@ᰔᩚ. 一怀明月ꦿ 

❤️‍🔥专栏系列:线性代数,C初学者入门训练,题解C,C的使用文章,「初学」C++

🔥座右铭:“不要等到什么都没有了,才下定决心去做”

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

目录

🐰静态数据成员

🌸静态数据成员的声明:

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

🌸静态数据成员的访问:

🐰静态成员函数

🌸静态成员函数的声明

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

🐰友元函数

友元函数的声明

🐰 友元类


🐰静态数据成员

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

🌸静态数据成员的声明:

static 数据类型 变量名;

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

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

🌸静态数据成员的访问:

(1)通过对象名进行访问
对象名.静态数据成员的变量名
(2)通过类名进行访问
类名::静态数据成员的变量名
注意:类的复合复制构造函数(默认的复制构造函数)并不能处理静态数据成员。需要自己提供的复制构造函数去处理静态数据成员

🐰静态成员函数

🌸静态成员函数的声明

静态成员函数的声明: 就是在普通的成员函数前面加一个static
static 返回类型 函数名(参数列表);

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

类名::函数名()

对象.函数名()
注意:
(1)静态成员函数与非静态的成员函数的根本区别: 非静态函数有this指针,而静态成员函数没有this指针,因而静态成员函数不能默认访问本类的非静态数据成员。
当调用一个对象的非静态的成员函数时,系统会把该对象的起始地址赋给成员函数的this指针。
(2) 静态成员函数可以直接访问静态数据成员 。在C++程序中静态成员函数主要是访问静态数据成员,不访问静态数据成员
例外:
Student s1;
int age ;int score ;age和score都是非静态的数据成员
static void print()
{
    Cout<<s1.age<<s1.score<<endl;
}
在当前作用域是合法的。

🐰友元函数

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

友元函数的声明

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

friend void print(Student &temp); 
注意:
(1)声明一个友元函数,就可以用这个函数直接访问该类的私有数据,从而提高了运行效率。
(2)友元函数提供了不同类的成员函数之间、类的成员函数与普通函数之间进行数据共享
(3)一个类的成员函数也可以作为另一个类的友元,一个类的成员函数作为另一个类的友元函数时,必须先定义这个类(作成员函数的类)

🐰 友元类

这种 友元类的说明方法是在另一个类声明中加入语句”friend 类名;” ,此语句可以放到公有部分,也可以放到私有部分或保护部分
class B
{
    ...
};
class A
{
    friend B;
    ...
};
这样B就是A的友元类,友元类B所有的成员函数都是A的友元函数,可以访问A类的对象中的任何成员。
关于友元,有以下注意:
(1)友元函数的声明可以出现在类的任何地方,也就是说友元的声明不受成员访问符的限制
(2)友元关系是单向的不是双向的,如果声明了B类是A类的友元类,不一定A类是B类的友元类,A类的成员函数不一定能够访问B类中的成员
(3)友元关系是不能传递的,例如,如果说B类是A类的友元类,C类是B类的友元类,并不能说C类就是A类的友元类。

 

🌸🌸🌸如果大家还有不懂或者建议都可以发在评论区,我们共同探讨,共同学习,共同进步。谢谢大家! 🌸🌸🌸   文章来源地址https://www.toymoban.com/news/detail-815592.html

到了这里,关于静态成员,友元函数,友元类的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 4.【CPP】入门(初始化列表||explicit||static||友元||静态成员变量/函数)

    4.【CPP】入门(初始化列表||explicit||static||友元||静态成员变量/函数)

    我们知道在c++11中才能在成员对象声明时初始化,像下面这样。 注意:构造函数不是初始化,而是赋初始值。那么在c++11以前该怎么初始化成员变量呢? 每个成员变量在初始化列表中只能出现一次(初始化只能初始化一次) 类中包含以下成员,必须放在初始化列表位置进行初始

    2024年01月20日
    浏览(16)
  • C++——详解类模板与友元函数

    C++——详解类模板与友元函数

    纵有疾风起,人生不言弃。本文篇幅较长,如有错误请不吝赐教,感谢支持。 模板类的友元函数有三类: 1)非模板友元函数:友元函数不是模板函数,而是利用模板类参数生成的函数。 2)约束模板友元函数:模板类实例化时,每个实例化的类对应一个友元函数。 3)非约束

    2024年02月11日
    浏览(9)
  • SYSU程设c++(第九周)函数对象、友元函数、友元类

    SYSU程设c++(第九周)函数对象、友元函数、友元类

    函数对象:         如果一个类 定义了operator()运算符函数 ,则 可以使用该类的对象名为函数名 调用这个函数.          函数对象是一个对象, 但 调用形式和普通函数调用一样 ,因此取名叫函数对象 (注意operator()先有个括号,接着才是括号(参数列表)) 友元函数:  f

    2023年04月23日
    浏览(13)
  • 波奇学C++:友元函数,友元类,内部类,匿名对象,优化构造

    波奇学C++:友元函数,友元类,内部类,匿名对象,优化构造

    这个代码会报错,原因是_a是a._a的私有成员,fun()是类外函数不能访问。 加上友元就可以突破限制 关于友元的知识 友元函数是一种声明,表明这个函数可以访问私有变量。 友元函数本质上不属于类函数,所以这个声明是不受访问限定符限制的,可以定义在public或者private中。

    2024年02月05日
    浏览(11)
  • C++类和对象终章——友元函数 | 友元类 | 内部类 | 匿名对象 | 关于拷贝对象时一些编译器优化

    C++类和对象终章——友元函数 | 友元类 | 内部类 | 匿名对象 | 关于拷贝对象时一些编译器优化

    🌸作者简介: 花想云 ,在读本科生一枚,致力于 C/C++、Linux 学习。 🌸 本文收录于 C++系列 ,本专栏主要内容为 C++ 初阶、C++ 进阶、STL 详解等,专为大学生打造全套 C++ 学习教程,持续更新! 🌸 相关专栏推荐: C语言初阶系列 、 C语言进阶系列 、 数据结构与算法 、 Linu

    2023年04月15日
    浏览(12)
  • c++类和对象(拷贝构造、运算符重载、初始化列表、静态成员、友元等)

    c++类和对象(拷贝构造、运算符重载、初始化列表、静态成员、友元等)

    拷贝构造函数的特征: 1、拷贝构造函数是构造函数的一个重载形式; 2、拷贝构造函数的参数只有一个且必须是同类类型对象的引用, 使用传值方式编译器直接报错 ,因为会引发无穷递归调用。 在c++中自定义类型 传值传参 的时候要调用拷贝构造函数。 3、若未显式定义,

    2024年02月15日
    浏览(14)
  • MFC使用友元函数访问窗体类成员变量

    首先创建一个窗体类指针的全局变量 在窗体类的OnInitDialog函数中将指针赋值this,在OnInitDialog中窗体已经创建完成。这样指针就可以指向窗体实例

    2024年02月07日
    浏览(7)
  • 运算符重载的函数作为类的成员函数和友元函数

    🐶博主主页: @ᰔᩚ. 一怀明月ꦿ  ❤️‍🔥 专栏系列: 线性代数,C初学者入门训练,题解C,C的使用文章,「初学」C++ 🔥 座右铭: “不要等到什么都没有了,才下定决心去做” 🚀🚀🚀大家觉不错的话,就恳求大家点点关注,点点小爱心,指点指点🚀🚀🚀 目录 🐰运

    2024年02月08日
    浏览(24)
  • 【C++】静态成员函数 ( 静态成员函数概念 | 静态成员函数声明 | 静态成员函数访问 | 静态成员函数只能访问静态成员 )

    【C++】静态成员函数 ( 静态成员函数概念 | 静态成员函数声明 | 静态成员函数访问 | 静态成员函数只能访问静态成员 )

    静态成员函数归属 : 在 C++ 类中 , 静态成员函数 是一种 特殊的函数 , 该函数属于类 , 而不是属于 类实例对象 ; 静态成员函数调用不依赖于对象 : 即使 没有创建 类 的 实例对象 , 也可以 通过 类名:: 调用 类中定义的 静态成员函数 ; 静态成员函数作用 : 静态成员函数 通常用于

    2024年01月21日
    浏览(15)
  • 【C++】类和对象(下篇)--->再识构造函数,static成员,友元,内部类,匿名对象

    【C++】类和对象(下篇)--->再识构造函数,static成员,友元,内部类,匿名对象

    目录 一、构造函数  1、构造函数体赋值  2、初始化列表  3、explicit 二、Static 成员  1、概念  2、特性 三、友元  1、友元函数  2、友元类 四、内部类  1、概念  2、特性 五、匿名对象 六、拷贝对象时的一些编译器优化 在创建对象时,编译器通过调用构造函数,给对

    2024年02月13日
    浏览(11)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包