C++与Java中的static成员总结

本文详细介绍了C++和Java中的static成员,包括静态成员变量和静态成员函数。在C++中,静态成员属于整个类,通过类名访问,静态函数不能是虚函数。而在Java中,静态变量在类加载时初始化,被所有对象共享,静态方法不能访问非静态成员,主要适用于共享数据和常量值。总结指出,无论在C++还是Java中,static成员都属于类,静态函数不能调用非静态成员,主要是由于this指针的限制。
摘要由CSDN通过智能技术生成

简述

在结构化程序设计中,内存中数据的共享是通过参数, 全局变量实现的;
在面向对象程序设计中函数与数据成员封装在一起, 数据共享通过类内部数据成员之间的相互访问, 外部对象则通过静态成员(即static成员)来共享数据;
接下来通过面向对象叙述static特性

C++中的static

静态成员
使用关键字static修饰的函数/数据成员, 静态成员属于整个类, 由同一个类的所有对象所拥有,共享; 一般通过类名进行访问: 类名::标识符 ;
注: 在类中定义静态数据成员, 仅仅是对静态数据成员进行引用性声明, 必须在类外使用类名限定定义性声明(即真正的声明),这时才能进行初始化

#include<iostream>
using namespace std;
class A{
    public:
        static int count;
        A(){
            ++count; 
            cout<<"构造函数"<<endl; 
        }
        A(A const& a){
            ++count; 
            cout<<"复制构造函数"<<endl;   
        }
        ~A(){
  cout<<"析构函数"<<endl;
            count--; 
        }
        static int show(){
            return count; //静态成员函数可以直接访问该类的静态数据成员,访问费静态数据成员只能通过对象名
        } 

};
int A::count=0; 
void f(){
  //顺带测试一下静态生存期
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值