很抱歉,您提供的信息不完整,无法确定您需要我帮助的内容。请提供更详细的信息或者具体的问题,我会尽力为您解答。

2026-04-12 00:451阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1630个文字,预计阅读时间需要7分钟。

很抱歉,您提供的信息不完整,无法确定您需要我帮助的内容。请提供更详细的信息或者具体的问题,我会尽力为您解答。

各位好友,欢迎来到本期博客!下面继续推进章节模块——静态成员与友元函数静态成员静态成员:称为类的静态成员,用static修饰的成员函数。静态成员函数静态成员函数:只能访问静态成员。友元函数友元函数:允许非成员函数访问类的私有成员。

各位好友, 欢迎来到本期博客 !下面继续推进本章节模块下 --->静态成员 与友元函数

----->静态成员 --->static

--->static 类成员称为类的静态成员,用 static 修饰的成员函数, 称之为 静态成员函数。静态成员需要在类外进行初始化。

很抱歉,您提供的信息不完整,无法确定您需要我帮助的内容。请提供更详细的信息或者具体的问题,我会尽力为您解答。


---->static 特性 :>

1.静态成员为所有类对象所共享, 不属于某一个具体的对象, 存在于静态区域;

2.静态成员变量需要放在类外进行定义, 定义时不会添加 static 关键字, 类中只是声明;

3.类静态成员 即可用 类名 ::静态成员 或者 对象 . 静态成员 来访问;

4.静态成员函数没有隐藏 this 指针, 不能访问任何非静态成员;

5.静态成员也是类的成员, 受 public, protect, private 访问限定符 限制。


---->如下 :>

#include <iostrem> using std::cout; using std::endl; class A { public: A() { ++_count; } A(const A& t) { ++_count; } ~A() { --_count; } static int GetCount() { return _count; } private: static int _count; }; int A :: _count = 0; int main() { cout << A::GetCount() << endl << endl; A a1, a2; A a3(a1); cout << A::GetCount() << endl << endl; return 0; }


为了方便好友们, 有更好地观感体验, 与更好地理解 !现 附上有彩色的代码图样 :>

----->验证 与运行结果 :>


----->友元函数 ---->friend 关键字

---->友元 -->提供了一种突破封装的方式, 有时提供便捷。但是 友元函数会增加耦合度, 从而破坏 封装性,所以友元函数不宜过多使用。

友元 :>友元函数 ~~ 友元类

(1)友元函数

前几期博文 --->赋值运算重载函数 -->已完成梳理!但是, 若将 operator<< 重载成成员函数 确实没有办法做到。因为 cout 的输出流对象 和this 指针总是会抢占第一个形参的参数位置, this 指针默认是第一个参数也就是左操作数。但是实际上cout 需要的是第一个形参对象, 才能正常使用。因此 要将 operator<< 重载成全局函数。这会导致类外部没有办法访问成员, 此时引入 友元可进行解决, operator>> 同理 !

----->如下 :>没有突破访问限制的情况:>


----->如下 :>突破访问限制的情况:>


------>解析 :>

各位好友, 上述 类域中, 并没有 声明定义 打印函数 !但 最终打印出了正确的结果 !这就是 流操作符一种最基本的运用 !上述代码模块标注区域, 有一个 " _out " 是重定义类型变量 !

以上便是 简单演示, 用友元函数 --->突破访问限定符 !


----->说明 :>

1. 友元函数可以访问类的私有和保护成员, 但不是类的成员函数;

2. 友元函数不能用 const 来进行修饰;

3. 友元函数可以在类定义的任何地方进行声明, 不受类访问限定符限制;

4. 一个函数可以是多个类的友元函数;

5. 友元函数的调用 与普通函数的调用原理是相同的。


(2)友元类

----->友元类的所有成员函数都可以作为另一个类的友元函数,都可以访问 另一个类的非公有成员。

---->特性 :>

1. 友元关系是单向的, 不具有交换性;

2. 友元关系不能进行传递;

3.友元关系还不能继承(这在后续章节 --->会详加说明)


------>验证 :>

--->特性 一 -->


各位好友, 请注意 :>上述代码模块 标注区域 !由于在空间类 “Space”声明定义了 时间类 “Time” 是其友元。

因此, 在调用函数的过程中,时间类 “Time” 被允许访问空间类中的所有成员 ---->调试结果 -->显示

但是, 在 类 “Space” 中却不被允许 访问时间类 “Time” ,感兴趣的的好友, 可以尝试运行一下, 会发现根本就编译不通过 !


---->下面转战验证 特性二:>

---->友元关系不能进行传递


各位好友, 请注意, 标注区域--->证明 友元函数不具有传递性 !


至此,本期模块, 已梳理完毕 !其实, 友元函数是一个特殊的存在 !虽然提供了某种程度上的便捷 !但是不符合规律性 !博主, 以后不到万不得已, 不会去使用它 !

希望, 本期模块, 能为好友们, 带来新的体验 与收获 !下一期, 继续推进 ---->再谈构造函数(升级版)---->匿名对象 ~~ 内部类

本文共计1630个文字,预计阅读时间需要7分钟。

很抱歉,您提供的信息不完整,无法确定您需要我帮助的内容。请提供更详细的信息或者具体的问题,我会尽力为您解答。

各位好友,欢迎来到本期博客!下面继续推进章节模块——静态成员与友元函数静态成员静态成员:称为类的静态成员,用static修饰的成员函数。静态成员函数静态成员函数:只能访问静态成员。友元函数友元函数:允许非成员函数访问类的私有成员。

各位好友, 欢迎来到本期博客 !下面继续推进本章节模块下 --->静态成员 与友元函数

----->静态成员 --->static

--->static 类成员称为类的静态成员,用 static 修饰的成员函数, 称之为 静态成员函数。静态成员需要在类外进行初始化。

很抱歉,您提供的信息不完整,无法确定您需要我帮助的内容。请提供更详细的信息或者具体的问题,我会尽力为您解答。


---->static 特性 :>

1.静态成员为所有类对象所共享, 不属于某一个具体的对象, 存在于静态区域;

2.静态成员变量需要放在类外进行定义, 定义时不会添加 static 关键字, 类中只是声明;

3.类静态成员 即可用 类名 ::静态成员 或者 对象 . 静态成员 来访问;

4.静态成员函数没有隐藏 this 指针, 不能访问任何非静态成员;

5.静态成员也是类的成员, 受 public, protect, private 访问限定符 限制。


---->如下 :>

#include <iostrem> using std::cout; using std::endl; class A { public: A() { ++_count; } A(const A& t) { ++_count; } ~A() { --_count; } static int GetCount() { return _count; } private: static int _count; }; int A :: _count = 0; int main() { cout << A::GetCount() << endl << endl; A a1, a2; A a3(a1); cout << A::GetCount() << endl << endl; return 0; }


为了方便好友们, 有更好地观感体验, 与更好地理解 !现 附上有彩色的代码图样 :>

----->验证 与运行结果 :>


----->友元函数 ---->friend 关键字

---->友元 -->提供了一种突破封装的方式, 有时提供便捷。但是 友元函数会增加耦合度, 从而破坏 封装性,所以友元函数不宜过多使用。

友元 :>友元函数 ~~ 友元类

(1)友元函数

前几期博文 --->赋值运算重载函数 -->已完成梳理!但是, 若将 operator<< 重载成成员函数 确实没有办法做到。因为 cout 的输出流对象 和this 指针总是会抢占第一个形参的参数位置, this 指针默认是第一个参数也就是左操作数。但是实际上cout 需要的是第一个形参对象, 才能正常使用。因此 要将 operator<< 重载成全局函数。这会导致类外部没有办法访问成员, 此时引入 友元可进行解决, operator>> 同理 !

----->如下 :>没有突破访问限制的情况:>


----->如下 :>突破访问限制的情况:>


------>解析 :>

各位好友, 上述 类域中, 并没有 声明定义 打印函数 !但 最终打印出了正确的结果 !这就是 流操作符一种最基本的运用 !上述代码模块标注区域, 有一个 " _out " 是重定义类型变量 !

以上便是 简单演示, 用友元函数 --->突破访问限定符 !


----->说明 :>

1. 友元函数可以访问类的私有和保护成员, 但不是类的成员函数;

2. 友元函数不能用 const 来进行修饰;

3. 友元函数可以在类定义的任何地方进行声明, 不受类访问限定符限制;

4. 一个函数可以是多个类的友元函数;

5. 友元函数的调用 与普通函数的调用原理是相同的。


(2)友元类

----->友元类的所有成员函数都可以作为另一个类的友元函数,都可以访问 另一个类的非公有成员。

---->特性 :>

1. 友元关系是单向的, 不具有交换性;

2. 友元关系不能进行传递;

3.友元关系还不能继承(这在后续章节 --->会详加说明)


------>验证 :>

--->特性 一 -->


各位好友, 请注意 :>上述代码模块 标注区域 !由于在空间类 “Space”声明定义了 时间类 “Time” 是其友元。

因此, 在调用函数的过程中,时间类 “Time” 被允许访问空间类中的所有成员 ---->调试结果 -->显示

但是, 在 类 “Space” 中却不被允许 访问时间类 “Time” ,感兴趣的的好友, 可以尝试运行一下, 会发现根本就编译不通过 !


---->下面转战验证 特性二:>

---->友元关系不能进行传递


各位好友, 请注意, 标注区域--->证明 友元函数不具有传递性 !


至此,本期模块, 已梳理完毕 !其实, 友元函数是一个特殊的存在 !虽然提供了某种程度上的便捷 !但是不符合规律性 !博主, 以后不到万不得已, 不会去使用它 !

希望, 本期模块, 能为好友们, 带来新的体验 与收获 !下一期, 继续推进 ---->再谈构造函数(升级版)---->匿名对象 ~~ 内部类