关于静态成员和静态成员函数的注意事项和用法

1.静态数据:

静态数据成员作用:将个对象中的数据成员值变成一样的(实现了资源共享)

好处:既可以通过对象名访问公用的静态数据成员,也可以通过类名引用静态数据成员

类名::数据成员

对象.数据成员

得出结论:静态数据成员并不属于对象,而属于类,但类的对象也可以引用

注意:

1.与静态变量相似,在对象的创建与销毁时,并不会影响静态成员,只有在程序结束时才会进行释放

2.不能够用初始化列表来对成员进行初始化,只能在类外进行

3.静态数据成员与全局变量不同,静态数据成员的作用域就局限与该定义的类中

2.静态成员函数

好处:与数据成员一样,既可以通过对象名访问公用的静态数据成员,也可以通过类名引用静态数据成员

类名::函数名();

对象.函数名();

注意:

1.非静态成员函数有this指针,而静态成员函数没有,由此可知静态成员函数不能访问本类中的非静态成员,只能访问静态成员函数,下面就是很好的例子,希望大家认真观看

用于计算三个学生的平均成绩

#include<iostream>
using namespace std;

class Student {
public:
    Student(int n, int a, float s): num(n), age(a), score(s) {}
    void total();
    static float average();
private:
    int num;
    int age;
    float score;
    static float sum;
    static int count;
};

void Student::total() {
    sum += score;
    count++;
}

float Student::average() {
    return (sum / count);
}

float Student::sum = 0;
int Student::count = 0;  //在类外初始化静态成员

int main() {
    // 定义三个同学的基本信息
    Student stu[3] = {
        Student(1001, 18, 70),
        Student(1002, 19, 78),
        Student(1003, 20, 98)
    };

    int n;
    cin >> n;
    for (int i = 0; i < n; i++) {
        stu[i].total();
    }
    cout << Student::average();
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值