C++类的静态成员_12

一。成员变量的回顾

  1.通过对象名能够访问 public 成员变量。

  2.每个对象都可以有只属于自己的成员变量

  3.成员变量不能在对象之间共享。

二。类的静态成员

  1. C++中可以定义静态成员变量和静态成员函数

  2. 静态成员属于整个类所有,不需要依赖任何对象。

  3. 可以通过类名直接访问public 静态成员

  4. 可以通过对象名访问public静态成员

  5. 静态成员函数可以直接访问静态成员变量。

三。静态成员变量的定义

  1. 在定义时直接通过 static 关键字修饰

  2. 静态成员变量不依赖于任何对象,需要在类外单独分配空间。

  3. 语法规则:Type ClassName::VarName:

#include <cstdlib>
#include <iostream>

using namespace std;
class Test
{
  private:
        static int ci;
  public:
        static int GetI()
        {
            return ci;
        }
        static void SetI(int i)
        {
              ci = i;
        }
};
int Test::ci = 0;

int main(int argc, char *argv[])
{
    Test::SetI(5);
    cout<<"Test::ci = " << Test::GetI() << "\n";

    cout << "Press the enter key to continue ...";
    cin.get();
    return EXIT_SUCCESS;

  5.从命名空间的角度

    a。类的静态成员只是类这个命名空间中的全局变量和全局函数

    b。不同的是,类可以对静态成员进行访问权限的限制,而命名空间不行

  6.从面向对象的角度

    a。类的静态成员属于类概念本身

    b。类的所有对象共享相同的静态成员

四。静态成员函数的定义

  1.在定义时直接通过 static 关键字修饰

  2.其余部分与普通成员函数定义相同

五。静态成员函数和普通成员函数有什么区别?

  c++类对象中的成员变量和成员函数是分开存储的

  1.成员变量

    普通成员变量:存储于对象中,与 struct 变量有相同的内存布局和字节对齐方式

    静态成员变量:存储于全局数据区中

  2.成员函数

    存储于代码段中

六。

#include <stdio.h>

class Test
{
    int i;
    int j;
    int k;

    static int c;
public:
    Test(int i, int j, int k)
    {
        this->i = i;
        this->j = j;
        this->k = k;
    }

    void print()
    {
        printf("Object Address: %08X\n", this);
        printf("&c = %08X, c = %d\n", &c, c);
        printf("&i = %08X, i = %d\n", &i, i);
        printf("&j = %08X, j = %d\n", &j, j);
        printf("&k = %08X, k = %d\n", &k, k);
    }
};

int Test::c;

int main()
{
    Test t1(0, 1, 2);
    Test t2(3, 4, 5);

    printf("t1 Address: %08X\n", &t1);
    t1.print();
    printf("t2 Address: %08X\n", &t2);
    t2.print();

    printf("Press any key to continue...");
    getchar();
    return 0;
}

六。小结

  1.C++类中可以包含属于类概念的静态成员

  2.静态成员变量在全局数据区分配空间

  3.静态成员函数不包含隐藏的this指针

  4.通过类名可以直接访问静态成员

时间: 2024-10-04 07:46:28

C++类的静态成员_12的相关文章

C++ 类的静态成员详细讲解

在C++中,静态成员是属于整个类的而不是某个对象,静态成员变量只存储一份供所有对象共用.所以在所有对象中都可以共享它.使用静态成员变量实现多个对象之间的数据共享不会破坏隐藏的原则,保证了安全性还可以节省内存. 静态成员的定义或声明要加个关键static.静态成员可以是Public,Private,Protected:Public的静态成员可以通过双冒号来使用即<类名>::<静态成员名>. 在C++中类的静态成员变量和静态成员函数是个容易出错的地方,本文先通过几个例子来总结静态成员变

类的静态成员

有的时候类需要它的一些成员与类本身直接相关,而不是与类的各个对象保持关联. 声明静态成员 我们通过在成员的声明之前加上关键字static使得其与类关联在一起,和其他成员一样,静态成员可以使public得或private的.静态数据成员的类型可以使常量.引用.指针.类类型等. 举个例子,我们定义一个类,用它表示银行的账户记录: class Account{ public: void calculate() {amount+=amount*interestRate;} static double r

枚举(enum)与类的静态成员(static)

枚举(ENUM)与类的静态成员(static) 枚举表示可以计数的一种类型 Gender.java public enum Gender { male, Female, } Person.java public class Person { String name; int age; Gender gender; static String nation; /** * display()显示方法 * */ void display() { System.out.println(String.fo

第25课 类的静态成员变量

1. 成员变量的回顾 (1)通过对象名能够访问public成员变量 (2)每个对象的成员变量都是专属的 (3)成员变量不能在对象之间共享 2. 静态成员变量 (1)C++中的静态成员变量 ①静态成员变量属于整个类所有 ②静态成员函变量的生命期不依赖于任何对象 ③可以通过对象名,也可以通过类名直接访问公有静态成员变量 ④所有对象共享类的静态成员变量 (2)静态成员变量的特性 ①在定义时直接通过static关键字修饰 ②静态成员变量在程序内部位于全局数据区,所以需要类外为其单独分配空间.(因为new

[email&#160;protected]类的静态成员变量和静态成员函数

参考: http://blog.csdn.net/morewindows/article/details/6721430 http://www.cnblogs.com/lzjsky/archive/2011/01/24/1943199.html 分析Qt程序时,碰到下面代码. QString str = QString("QFrame#avatar{border-image:url(%1.jpg)}").arg( QString::number(i) );   静态成员变量 静态成员函

C++面向对象学习-类的静态成员

1 静态数据成员 2 1,sizeof 运算符不会计算静态成员. 3 4 2,对静态成员数据初始化的顺序为它们在类体外声明的顺序. 5 6 3,静态数据成员被类的所有对象所共享,包括该类的派生类对象. 7 8 4,静态成员数据也可以分为公有的.私有的和受保护的静态成员. 9 对公有静态成员,即可以通过类的对象进行访问,也可以通过类名直接访问. 10 私有的和保护的静态成员数据则只能被该类的公有成员函数访问. 11 12 5,在创建任何对象之前,类的静态成员数据已经存在并可以引用. 13 14 6

分析java类的静态成员变量初始化先于非静态成员变量

分析java类的静态成员变量初始化先于非静态成员变量 依上图中当class字节码文件被jvm虚拟机加载到内存中依次经过 连接 验证:对字节码进行验证 准备:给静态变量分配内存并赋予变量类型各自的默认值(注:基本类型为0或false,对象为null,static final修饰的常量直接赋予相应的值) 解析:类中符号引用转换成直接引用 初始化:为类的静态变量/静态语句块初始化相应的值 而类的初始化契机是:类在被第一次主动使用的情况下,主动使用包括以下6中情况: 使用new关键字实例化对象时. 调用

类之静态成员以及常对象、常成员

一.静态成员:static修饰,每个类只有一份拷贝,为所有该类的对象所共用. 1.静态数据成员: 类内声明.类外初始化.和全局变量一样,在数据段里分配内存. eg: class A{ static int co; }; int A::co=0; 2.静态成员函数: 1).静态成员函数专门用来存取类的静态成员,不可访问非静态成员,没有this指针.由static在类内声明,可以在类外定义,此时不需要static作为前缀. eg: class A{ static int co; static int

面向对象课后深入学习(C++ 类的静态成员详细讲解)

今天在刚申请了博客,一下午都在写那个随笔,所以说好的来看c++的也放在了最后,下星期就考试了,这个类的静态成员是我不是很懂的,在网上 看到一片很详细的博客考下来回去慢慢看. 在C++中,静态成员是属于整个类的而不是某个对象,静态成员变量只存储一份供所有对象共用.所以在所有对象中都可以共享它.使用静态成员变量实现多个对象之间的数据共享不会破坏隐藏的原则,保证了安全性还可以节省内存. 静态成员的定义或声明要加个关键static.静态成员可以通过双冒号来使用即<类名>::<静态成员名>.