static 类中的静态成员,组合类,友元函数 ,内部类

static 表示静态的意思

在c++中有两种表示 ,静态成员变量和静态成员函数

一个类中的静态成员只属于当前类,不属于某个对象。一个类的静态成员只有一份由当前类所有,每个对象都可以访问静态成员,当然也可以通过类名来访问

这里推荐用类名::静态成员来访问

static 成员函数应该在所有的成员函数之外初始化 如果不初始化系统默认为0

static 成员函数只能访问static成员

static成员函数  ,函数体内不能使用this指针

在我前前面已经说过组合类的概念了,今天我再介绍两个类,友元,以及内部类。

组合类,就是一个类中有另一个类的对象,如声明一个class  penson,成员变量有姓名,年龄,出生日期等,在声明一个date类,这个类里面就是存的年月日的信息,因此我们可以将person类的出生日期设为date类,这就构成了一个组合类。

友元的概念,就像是我们的朋友,比如说  小红说小明是她的朋友,那么对于小红来说,小明肯定有别人所没有的特权(为什么是段子手小明啊 ,老王呢?)因此,类举到我们的类中,就是说,一个类可以把另一个类当成朋友,给予他访问自己成员变量的权利(包括私有成员变量,还真是推心置腹啊,没有一点秘密)。那么另一个类,在自己的类中就可以访问刚才那个类的变量。

友元还有一种概念是友元函数,类似于友元类。其实,友元类里面的每个方法都是一个友元函数,读者自行脑补。

友元的特征,不能传递(朋友的朋友不一定是朋友),不能交换(你把他当朋友,他不一定把你当朋友,在这就是他不把你当朋友),不能继承(你爸爸的朋友不一定是你的朋友)

友元类的使用时机:

友元虽然可以访问类的成员变量,但是他打破了类的封装,因此不建议这样做。

在运算符的重载是会用到友元类

在类与类之间要共享资源的时候

友元函数的参数问题(友元函数无this指针)有3种情况:

1、要访问非静态成员时,需要对象做参数;

2、要访问静态成员或全局变量时,不需要对象做参数;

3、如果做参数的对象是全局的,则也不需要对象做参数

内部类,内部类也叫做嵌套类。我个人很喜欢将其称为内部类,顾名思义,就是在一个类的中间定义另一个类。里层和外层类访问的规则是,互相可以访问公有成员。

在定义内部类前面要加上public,(类成员默认私有,不加系统默认为实声明了一个私有的内部类),内部类不可以直接访问外部类的成员,一种方法是通过外部类的对象,一种方法是静态访问即:外部类名::外部类静态成员访问

类的成员的访问方法(类外:public)

方法一:对象名.成员(变量或者函数)

指针变量à成员(变量或者方法)

(*指针变量).成员(变量或者方法)

方法二:类名::成员(变量或者函数)

时间: 2024-08-04 21:55:34

static 类中的静态成员,组合类,友元函数 ,内部类的相关文章

static 类中的静态成员

static 表示静态的意思 在c++中有两种表示 ,静态成员变量和静态成员函数 一个类中的静态成员只属于当前类,不属于某个对象.一个类的静态成员只有一份由当前类所有,每个对象都可以访问静态成员,当然也可以通过类名来访问 这里推荐用类名::静态成员来访问 static 成员函数应该在所有的成员函数之外初始化 如果不初始化系统默认为0 static 成员函数只能访问static成员 static成员函数  ,函数体内不能使用this指针

C++类中的静态成员变量与静态成员函数

最近一直看c++相关的项目,但总是会被c++类中的静态成员变量与静态成员函数的理解感觉很是模糊,不明白为什么类中要是用静态成员变量.于是在网上搜集了一些资料,自己再稍微总结下. 静态成员的概念: 静态类中的成员加入static修饰符,即是静态成员.可以直接使用类名+静态成员名访问此静态成员,因为静态成员先于类的声明而存在于内存,也可以根据类声明的对象来访问.而非静态成员必须实例化之后才会分配内存. 非静态成员的概念: 所有没有加static的成员都是非静态成员.而类被实例化后,可以通过实例化的类

C++ 类中的静态成员变量,静态成员函数

//类中的静态成员变量,静态成员函数 #define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; /* 静态成员函数是属于整个类, static修饰的变量,是属于类,,所有的对象都能共享用. 在类的静态数据成员函数中,是不能调用具体的对象的变量的属性, 这是因为static修饰的变量是整个类共享,在静态成员函数中使用一个对象的成员属性 c++编译器无法知道这个成员属性是哪个对象的 所以在静态成员函数中只能使用静

友元——友元可以访问与其有好友关系的类中的私有成员。 友元包括友元函数和友元类。

简介:友元可以访问与其有好友关系的类中的私有成员.    友元包括友元函数和友元类. [1]将普通函数声明为友元函数 #include<iostream> using namespace std; class Time { public: Time(int,int,int); friend void display(Time &);//定义友元函数 private: int hour; int minute; int sec; }; Time::Time(int h,int m,int

java-B类中的得到A类中的一个map

1 B类中的想得到A类中的一个map结果 2 3 Class A{ 4 // 通过某种方法得到的transMap 5 B.setTransInfo(transMap); 6 7 } 8 9 Class B{ 10 11 private static Map<T> map = null; // get set方法省略 12 13 public static void setTransInfo(Map<T> transMap){ 14 map = transMap; 15 } 16 1

C++程序设计方法3:类中的静态成员

在类型前面加static修饰的数据成员,是隶属于类的,成为类的静态数据成员,也称为"类的变量" 静态数据成员被该类的所有对象共享(即所有对象中的这个数据域实际上处于同一个内存位置) 静态数据要在实现文件中赋初值,格式为: Type ClassName::static_var = Value; 返回值类型前面加static修饰的成员函数,称为静态成员函数,它们不能调用非静态成员函数: 类的静态成员(数据,函数)既可以通过对象来访问,也可以通过类名字类访问: #include <io

C++类中的静态成员变量与静态成员函数的使用

代码: 1 #include <iostream> 2 #include <string> 3 #include <cstdio> 4 5 using namespace std; 6 7 class A{ 8 public: 9 static int a; 10 //static int a = 0; //编译不通过,无法在类内初始化 11 int b; 12 static void func1(){ 13 cout<<"static func&

小鱼提问3 static方法中可以访问某个类的私有变量吗(不通过反射的其他非正常手段)?什么情况下可以?

? 1 2 3 4 5 6 7 8 9 10 11 12 class Student {     private string _name;     public int Age = 0;     public static void Test()     {         Student stu = new Student();         <span style="color: rgb(255, 0, 0);"><strong>stu._name =

CI框架中一个类中调用另一个类中已经加载对象测试

controller.php 1 <?php 2 class CI_Controller { 3 4 private static $instance; 5 6 public function __construct() 7 { 8 self::$instance =& $this; 9 10 foreach (is_loaded() as $var => $class) 11 { 12 $this->$var =& load_class($class); 13 $obj