1.数据成员可以分静态变量、非静态变量两种.
静态成员:静态类中的成员加入static修饰符,即是静态成员.可以直接使用类名+静态成员名访问此静态成员,因为静态成员存在于内存,非静态成员需要实例化才会分配内存,所以静态成员不能访问非静态的成员..因为静态成员存在于内存,所以非静态成员可以直接访问类中静态的成员.静态成员在每个类中只有一个拷贝,是解决同一个类的不同对象之间数据和函数共享问题的。
 
 非成静态员:所有没有加Static的成员都是非静态成员,当类被实例化之后,可以通过实例化的类名进行访问..非静态成员的生存期决定于该类的生存期..而静态成员则不存在生存期的概念,因为静态成员始终驻留在内容中..

一个类中也可以包含静态成员和非静态成员,类中也包括静态构造函数和非静态构造函数..

2.

静态成员函数可以直接引用该类的静态数据成员和静态成员函数,但不能直接引用非静态数据成员和非静态成员函数,否则编译报错。如果要引用,必须通过参数传递的方式得到对象名,然后再通过对象名引用
class A
{public:static void f(A a);private:int x;
};
void A::f(A a)
{cout<<x<<endl;//对x的引用是错误的cout<<a.x<<endl;//正确的
}
例2:

#include<iostream>
using namespace std;class Myclass
{private:int        m;  // 非静态数据成员static    int n;  // 静态数据成员public:Myclass();  // 构造函数static   int getn(Myclass a);    // 静态成员函数
};Myclass::Myclass()
{m = 10;
}int    Myclass::getn(Myclass a)
{cout << a.m << endl;   // 通过类间接使用  非静态数据成员return n;        // 直接使用  静态数据成员
}int    Myclass::n = 100;  // 静态数据成员初始化void    main()
{Myclass app1;cout << app1.getn(app1) << endl;  // 利用对象引用静态函数成员cout << Myclass::getn(app1) << endl; // 利用类名引用静态函数成员
}
那么可以得出结论,静态成员和非静态成员区别如下:
1.访问方式不一样.静态成员(通过类名.静态成员名访问).非静态成员(通过对象名.非静态成员名访问)
2.静态成员属于类.该类的所有对象共同拥有这一个成员.
非静态成员属于对象,每个对象都有一份.静态成员不论有类有多少个对象.只在内存中分配一块空间.

C++静态成员和非静态成员的区别相关推荐

  1. C++静态成员和非静态成员的区别 及修饰

    版权声明:本文为博主原创文章,未经博主允许不得转载. 1.数据成员可以分静态变量.非静态变量两种. 静态成员:静态类中的成员加入static修饰符,即是静态成员.可以直接使用类名+静态成员名访问此静态 ...

  2. 静态成员与非静态成员的区别

    一.静态成员的特点: (1)static数据成员在类的内部声明,但只能在类的外部定义,在类的外部不能指定static,在类的定义时候进行初始化; (2)static数据成员只能在类的外部进行初始化(特 ...

  3. 静态成员和非静态成员的区别

    1.数据成员可以分静态变量.非静态变量两种. 静态成员:静态类中的成员加入static修饰符,即是静态成员.可以直接使用类名+静态成员名访问此静态成员,因为静态成员存在于内存,非静态成员需要实例化才会 ...

  4. java学习总结(16.06.07)类的静态成员和非静态成员

    java里,类的成员可分为静态成员和非静态成员(实例成员),静态成员和非静态成员,从定义上来说就是有没有static修饰符修饰的区别.有static修饰的成员就是静态成员.如 public stati ...

  5. java静态成员和非静态成员的区别

    static(静态)关键字      static关键字: 用于修饰成员(成员变量和成员函数)     被修饰后的成员具备以下特点: 随着类的加载而加载 优先于对象存在 被所有对象所共享 可以直接被类 ...

  6. 静态成员和非静态成员的区别是什么?

    一.名称上的区别: 成员变量也叫实例变量:静态变量也叫类变量. 二.内存存储的区别: 成员变量存储到堆内存的对象中,静态变量存储到方法区的静态区中. 三.生命周期不同: 1)成员变量随着对象的出现而出 ...

  7. static的应用以及静态与非静态的区别

    先前看到一个技术大牛写了一个关于静态成员与非静态成员,静态方法和非静态方法的各自区别,觉得挺好的,在这里写一个小程序来说明这些区别. package com.liaojianya.chapter5; ...

  8. 静态成员变量和静态成员函数(static)

    数据成员可以分静态变量.非静态变量两种. 静态成员:静态类中的成员加入static修饰符,即是静态成员.可以直接使用类名+静态成员名访问此静态成员,因为静态成员存在于内存,非静态成员需要实例化才会分配 ...

  9. C# 静态和非静态的区别

    静态标记 – static //静态方法 public static void Max(){ } //非静态方法 public void Max(){ }//静态类 public static cla ...

最新文章

  1. 年化收益14%的投资机会,出手吗?
  2. STM32-USART接收程序
  3. Python collection模块
  4. 如何实现ABB机器人与老式焊机的连接控制
  5. 160. 相交链表 golang
  6. java终结者,动态语言是否会成为JAVA的终结者?
  7. 基于AgileEAS.NET企业应用平台实现基于SOA架构的应用整合方案-开篇
  8. QScrollArea 详解
  9. linux fcntl注销信号,linux下fcntl的使用(转载)
  10. 【编辑器】VSCode的Web前端(html,css,JavaScript)开发环境打造
  11. Fragment与Radiogroup联动,经典的主界面布局。使用show和hide的方式实现;
  12. Elasticsearch 系列4 --- Windows10安装Kibana
  13. Angr安装与使用之使用篇(六)
  14. JAVA之旅(三十)——打印流PrintWriter,合并流,切割文件并且合并,对象的序列化Serializable,管道流,RandomAccessFile,IO其他类,字符编码
  15. 程序员的思维修炼:开发认知潜能的九堂课
  16. 三星android mac地址修改,三星手机如何改mac地址啊
  17. Unmapped Spring configuration files found. Please configure Spring facet or use ‘Create Default Con
  18. 必应每日一图php,轻量必应每日一图HTML源码
  19. 人生在世,最大的笑话莫过于自作多情...
  20. 芯片之家精选文章合集 (二):收藏起来慢慢看

热门文章

  1. Bone-Age-Detection-From-X-Ray
  2. 【设计灵感】产品设计中的灵感来源于日常生活
  3. 计算机类课程嵌入式系统的特点及其应用,嵌入式系统的准确定义、特点及其重要性...
  4. android 动画制作小软件GifMaker
  5. 出现这个错误的解决方法No enclosing instance of type 类名 is accessible. Must qualify the allocation with
  6. 技术领导力: 深度访谈《深入分布式缓存》
  7. 浅谈Google SEO入行
  8. 克隆远程仓库#180804
  9. 改善脑力的70条方法[翻译] 1
  10. Springboot使用Mapstruct拷贝对象,集成swagger2