C++面向对象 静态成员和友元

第十一章 静态成员和友元

11.1 静态成员

1.C++类当中的静态数据成员仍借用保留字static,但是与之前的静态全局变量,静态局部变量以及静态函数没有关系。

2.静态数据成员不占用具体对象的数据空间。

3.静态数据成员的创建和销毁处分权不属于任何对象。对象有权利读和写静态成员。静态成员应该在创建任何具体对象之前就可以访问,所以要求静态成员在创建类的任何对象

之前就要存在(犹如全局变量、全局对象在main函数前面执行一样)因此静态数据成员应该在主函数之前先定义初始化。

4.静态数据成员不能没有定义也不能不定义。应该将类的静态数据成员定义和初始化语句放在类的内部实现源文件当中。

格式为: 数据类型 类名::静态数据成员名=初始化值;

或者:  数据类型 类名::静态数据成员名(初始化值);     (在这里不能再写保留字static)

5.静态数据成员的生命期是全局的,与是否创建了对象没有关系。

6.要访问静态数据成员的时候,可以用对象访问也更一般是用类名访问。

对象名.静态数据成员名

类名::静态数据成员名

7.静态成员函数的声明语法格式:  static 返回类型 静态成员函数名(形式参数表)在类体外定义的时候不能添加保留字static!

8.静态成员函数可以被该类所有对象所使用,但是注意静态成员函数没有隐含传递所谓的“本对象地址”的指针形式参数this,只能显式地传递对象作为参数。

11.2友元

1.友元不是类的成员。

2.友元分为友元类和友元函数。

3.友元函数在类声明当中就在前面加一个friend表示函数不是本类成员,而是本类的友元函数。

4.友元函数在处理具体对象的时候需要将对象显式地传递给函数。

4.友元类:声明一个类是另一个类的友元,成为友元类。友元类当中的所有成员函数都是本类的友元函数,都能够访问本类中的所有成员。

原文地址:https://www.cnblogs.com/joelovescoding/p/11829489.html

时间: 2024-08-30 02:47:01

C++面向对象 静态成员和友元的相关文章

Php面向对象—静态成员

静态属性 使用static关键字声明的属性 该静态属性,在逻辑上,是定义在类上面的属性.保证一个类,对应一个属性. 例子: class Student { public  $stu_id; public  $stu_name; public  static $stu_count = 0; public  function __constuct($id,$name) { $this->stu_id = $id; $this->stu_name = $name; } } 访问静态属性: 通过类来访

类中静态成员与友元

8.11静态成员 使用关键字static.初始化静态成员数据必须在类外进行. 8.11.1静态成员数据 它是一个类的对象共享的数据成员,而不仅仅是某一对象的成员数据.例如班级名和班级人数就可以定义为学生类的静态成员数据. 它与一般成员数据的区别在于:对于静态成员数据,该类的每一个对象都共享唯一的数据,即它只存在一份拷贝:而对于一般成员数据,该类的每个对象都独立建立自己一个副本,以保存各自特定的值. 在Student类中定义静态成员数据int Student::count=0;当定义静态成员数据时

10 面向对象(package关键字的概述及作用)

10.01_面向对象(package关键字的概述及作用) A:为什么要有包 *开发时有很多类,如果放在一个文件夹中不方便管理,而且容易重复 将字节码(.class)进行分类存放 包其实就是文件夹 B:包的概述 举例: 学生:增加,删除,修改,查询 老师:增加,删除,修改,查询 - 方案1:按照功能分 com.heima.add AddStudent AddTeacher com.heima.delete DeleteStudent DeleteTeacher com.heima.update U

PHP面向对象笔记解析

PHP的面向对象是很重要的内容,也是很常用的内容.所以现在就把PHP面向对象进行整理了一下. 顺带,我会在后面把我整理的一整套CSS3,PHP,MYSQL的开发的笔记打包放到百度云,有需要可以直接去百度云下载,这样以后你们开发就可以直接翻笔记不用百度搜那么麻烦了.  笔记链接:http://pan.baidu.com/s/1qYdQdKK 密码:pvj2 一.面向对象的基本概念 1.什么是面向对象? 对象 面向 由于目前都还没有一个统一的概念,所以所能理解的就是一个物体被抽象出来,每个物品都是一

面向对象第四次实验

实验四 静态成员与友元 1.实验目的(1)学习静态成员的使用,理解静态成员的特殊用途.(2)学习友元函数及友元类,领会友元类的作用.2.实验内容        应用VC++6.0的编辑环境构造一个类Stack,设计一个整数链表类,实现栈操作.类中需有记录结点个数的数据成员(静态成员),要有判空操作.编制应用程序,取100次随机数(<1000),如果取到的随机数比前一个随机数大的话,入栈,然后逐个取出(即出栈过程)求其和.        用堆分配方法逐个产生满足条件(递增有序)的结点,插入栈中,每

day10&lt;面向对象+&gt;

面向对象(package关键字的概述及作用) 面向对象(包的定义及注意事项) 面向对象(带包的类编译和运行) 面向对象(不同包下类之间的访问) 面向对象(import关键字的概述和使用) 面向对象(四种权限修饰符的测试) 面向对象(类及其组成所使用的常见修饰符) 面向对象(内部类概述和访问特点) 面向对象(成员内部类私有使用) 面向对象(静态成员内部类) 面向对象(成员内部类的面试题) 面向对象(局部内部类访问局部变量的问题) 面向对象(匿名内部类的格式和理解) 面向对象(匿名内部类重写多个方法

C++笔记(仅C++特性,需C语言基础)

C++复习笔记一(类的声明定义应用与构造函数析构函数部分)const在C语言中是"不能被改变值的变量",而在C++种子则是"一种有类型描述的常量",常量必须初始化,并且不可以改变const int *P=15;const 在*的左边,所以*p是常量,不可以改变int * const p=15;const在*的右边,所以p是常量,但是*p不是,*p是int型,*p的值可以改变const型的引用只能用const型,不能用普通类型来引用,因为普通类型引用可能会修改cons

C++寒假计划

课程 西北工业大学的c++程序设计 理由 这个课程里的内容都比较详细,能比较全面的讲解C++,我们是从C过渡到C++的,所以我之前看了阚道洪的面向对象程序设计的课程,他讲解了两者的差别,还有C++对C的改进和提升.看了之后希望对学习有帮助. 计划 课程有48个课时,计划从2月8号开始,每天看三节左右的课程,认真做好笔记,并用写代码来巩固自己的知识.一开始会多看几节,后面会轻松点. 课程的目录 第1讲 C++语言概述 第2讲 信息的表示与存储 第3讲 程序中数据的表示 第4讲 运算符与表达式 第5

类和对象(二)

对象的自身引用是面向对象程序设计语言中特有的.十分重要的一种机制.在C++中,为这种机制设立了专门的表示:this指针变量. 在类的每一个成员函数的形参表中都有一个隐含的指针变量this,该指针变量的类型就是成员函数所属类的类型. 当程序中调用类的成员函数时,this指针变量被自动初始化为发出函数调用的对象的地址. 例如: 123456789101112131415161718 #include <iostream>using namespace std;class Sample{ int x