大学IT网 - 最懂大学生的IT学习网站! QQ资料交流群:367606806
当前位置:大学IT网 > C++技巧 > 深入理解C++中static类成员

深入理解C++中static类成员(1)

关键词:C++static  阅读(1008) 赞(20)

[摘要]本文是对C++中static类成员的讲解,对学习C++编程技术有所帮助,与大家分享。

static局部变量

static局部变量确保不迟于在程序执行流程第一次经过该对象的定义语句时进行初始化

这种对象一旦被创建,在程序结束前不会被撤销。在该函数被多次调用的过程中,静态局部对象会持续存在并保存它的值。

#include<iostream>
#include<string>
#include<assert.h>
using namespace std;
size_t count_calls()
{
    static size_t ctr=0;
    return ++ctr;
}

int main()
{
    for(size_t i=0; i!=10; ++i)
        cout<<count_calls()<<endl;
    getchar();
    return 0;
}

static类成员

全局对象会破坏封装,对象需要支持特定类抽象的实现,类可以定义类静态成员,不像普通的数据成员,static数据成员独立于该类的任意对象而存在。

1、使用类的static成员的优点:

(1)static成员的名字在类的作用域中,因此可以避免与其他类的成员或全局对象的名字冲突;

(2)可以实施封装。static成员可以是私有成员,而全局对象不是;

(3)通过阅读程序容易看出static成员是与特定类关联的。

2、定义static成员

考虑一个银行账户类,每个账户的利率总是相同的,代码如下:

class Account{
public:
    void applyint() {amount+=amount*interestRate;}
    static double rate() {return interestRate;}
    static void rate(double);
private:
    string owner;
    double amount;
    static double interestRate;
    static double initRate();
};

3、使用类的static成员

可以通过作用于操作符从类直接调用static成员,或者通过对象、引用或指向该类类型对象的指针间接调用

Account ac1;
Account *ac2=&ac1;
double rate;
rate=ac1.rate();
rate=ac2->rate();
rate=Account::rate();

像其他的成员函数一样,类成员函数可以不用作用域操作符来引用类的static成员:

class Account{
public:
    void applyint(){ amount+=amount*interestRate;}
};

static成员函数

类的成员函数定义在类的外面不需要重复static关键字

«上一页12下一页»


相关评论