码迷,mamicode.com
首页 > 其他好文 > 详细

静态成员变量和静态成员函数

时间:2016-07-08 11:34:41      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:

普通成员变量是对象各自独有的,不会相互之间影响,但是静态成员变量是共用的。sizeof不会把静态成员变量计算进去。

普通成员函数必须具体作用于某个对象,而静态成员函数不具体作用于某个具体对象。静态成员访问时和普通成员访问相比多了一种即通过类名进行访问。

静态成员变量和函数本质上是全局变量和函数。我们在使用时,应该在类外面进行初始化或者说明,否则编译能通过,但是链接不能通过。

在静态成员函数中不能访问非静态成员变量和非静态成员函数。因为静态成员函数不作用于具体的对象上。

 

在使用静态成员变量和函数时会存在安全隐患,因为不是所有的对象在创建时都是通过构造函数进行创建的,还可以通过复制构造函数进行创建,这样就会导致程序出现错误。解决办法就是重写复制构造函数,保证程序运行正确。

 

#include <iostream>
 
using namespace std;
 
class Crectangle
{
private:
    int width, length;
    static int NumTotal;
    static int TotalSize;
public:
    Crectangle(int w, int l)
    {
        width = w;
        length = l;
        NumTotal += 1;
        TotalSize += w*l;
    }
    Crectangle(Crectangle & c)
    {
        width = c.width;
        length = c.length;
        NumTotal += 1;
        TotalSize += w*l;
    }
    static void print(void)
    {
        cout << NumTotal << endl;
        cout << TotalSize << endl;
    }
    ~Crectangle()
    {
        NumTotal -= 1;
        TotalSize -= width*length;
    }
};
int Crectangle::TotalSize = 0;
int Crectangle::NumTotal = 0;
int main()
{
    Crectangle rec1(3, 4), rec2(4, 9);
    Crectangle::print();
    return 0;
}

 

静态成员变量和静态成员函数

标签:

原文地址:http://www.cnblogs.com/helloforworld/p/5652814.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!