zoukankan      html  css  js  c++  java
  • C++程序设计方法3:类中的静态成员

    在类型前面加static修饰的数据成员,是隶属于类的,成为类的静态数据成员,也称为“类的变量”

    静态数据成员被该类的所有对象共享(即所有对象中的这个数据域实际上处于同一个内存位置)

    静态数据要在实现文件中赋初值,格式为:

    Type ClassName::static_var = Value;

    返回值类型前面加static修饰的成员函数,称为静态成员函数,它们不能调用非静态成员函数;

    类的静态成员(数据,函数)既可以通过对象来访问,也可以通过类名字类访问;

    #include <iostream>
    using namespace std;
    
    class Test
    {
        static int count;
    public:
        Test() { count++; }
        ~Test() { count--; }
        static int how_many() { return count; }
    };
    
    int Test::count = 0;
    
    void print(Test t)
    {
        cout << "tests:" << t.how_many() << endl;
    }
    
    int main()
    {
        Test t1;
        cout << "test#" << Test::how_many() << endl;
        Test t2 = t1;
        cout << "test#" << Test::how_many() << endl;
        print(t2);
        cout << "test#" << t1.how_many() << "," << t2.how_many() << endl;
       return 0; }

    类中的常量成员

    使用const修饰的数据成员,称为类的常量数据成员,在对象的整个生命周期内不可以更改;

    常量数据成员只能在构造函数的初始化列表中被设置,不允许在函数中通过赋值来设置;

    若用const修饰成员函数,则该成员函数在实现时不能修改类的数据成员, 即函数体中不能有改变对象状态的语句;

    若对象被定义为常量,则它只能调用以const修饰的成员函数,其他成员函数不允许调用;

    怕什么真理无穷,进一寸有一寸的欢喜。---胡适
  • 相关阅读:
    学习笔记CSS
    悲剧,当用cywin 写Linux脚本
    .net中控件的命名规则和一些词语的简称(转)(I)
    PyMining开源中文文本数据挖掘平台 Ver 0.2发布
    TCP和UDP的区别(转)
    发一道我今天遇到C面试题(求完美解)
    C#三种定时器的实现转载
    window 拷贝 linux 远程
    datepicker 日月年
    Oracle PL/SQL练习题总目录 hl3292
  • 原文地址:https://www.cnblogs.com/hujianglang/p/6629320.html
Copyright © 2011-2022 走看看