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


    普通成员变量是对象各自独有的,不会相互之间影响,但是静态成员变量是共用的。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;
    }

     参考链接:

    https://www.coursera.org/learn/cpp-chengxu-sheji

  • 相关阅读:
    Linux curl命令详解
    php技能树---大神的进阶之路
    PHP Socket 编程之9个主要函数的使用之测试案例
    史上最全的PHP正则表达式
    php 简单使用redis 队列示例
    PHP中使用 Memcached 的测试案例
    机动车驾驶(1)--- 禁令标志汇总 by John
    闵可夫斯基和(Mincowsky sum)
    二维平面上判断点是否在三角形内
    计算任意多边形的面积
  • 原文地址:https://www.cnblogs.com/helloforworld/p/5652814.html
Copyright © 2020-2023  润新知