首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C++静态成员

静态成员就是不管这个是否有已实例化的对象存在,这个成员都一直存在。 也就是说,静态成员是绑定在上的,而不是绑定在对象上的。 声明静态成员的方式就是在函数前加入static关键字。...静态成员通常适用于当一个的所有对象之间需要共享同一份数据的时候,这样子能节省空间,提高效率。 在C++11之前,只有int或者enum类型能在声明的时候被初始化。...(但是C++11及以后则不存在这个问题) 如何访问静态数据成员? 对于public的静态数据成员,我们只需要用类似于 Test::data 这样子的格式来访问即可。...对于private或者protected的静态数据成员,我们需要为他们创建一个静态成员函数来返回他们的值。同样的,静态成员函数是绑定在上而不是在对象上的。..." << Employee::getCount() << endl; } 特别的,对于main.cpp中,用一对大括号括起来的代码块,他们的变量作用域只是这个块之中,当这一块结束之后,里面的数据成员也就被清理了

66530

C++静态数据成员静态成员函数

我们需要一个成员为所有对象所公有,而且在需要更新这个公有属性的时候只需修改一次。 因此,C++提供了静态数据成员来描述对象相同的属性。...静态数据成员 静态数据成员是属于这个的,而不是属于某个对象的。...在定义的时候非静态数据成员是不分配内存的,只有在创建对象的时候才分配内存,但静态数据成员是要分配内存的,因为它是属于的,只有一块内存,所以要初始化它,而且不能在的声明中初始化,必须要在外初始化...静态成员函数 一般都是在静态成员函数中修改静态数据成员,在刚刚的手机声明中的成员函数: static void change(); 就是静态成员函数。...首先,可能你在做题的时候,题目要求你使用静态成员函数完成任务…… 开个玩笑啦…… 静态成员函数没有this指针,因为它在创建的时候就存在了,在没有创建对象的时候就已经存在静态成员函数,而普通函数必须在对象被创建的时候才能被使用

18730
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C++ 静态成员

    静态变量 我们可以使用 static 关键字来把成员定义为静态的。当我们声明成员静态时,这意味着无论创建多少个的对象,静态成员都只有一个副本。 静态成员的所有对象中是共享的。...如果其中一个对象调用函数将其改变了,那么其他成员在访问这个静态成员变量的时候的值都是改变之后的; ④、只要在中定义了静态成员变量,那么就占用存储空间了,不管有没有定义这个的对象,因为静态成员变量不属于任何对象...但如果静态数据成员被定义成private私有的,那么通过对象或者名来引用都是不可以的,必须通过的public类型的静态成员函数来引用了。...静态函数 如果把函数成员声明为静态的,就可以把函数与的任何特定对象独立开来。静态成员函数即使在对象不存在的情况下也能被调用,静态函数只要使用名加范围解析运算符 :: 就可以访问。...静态成员函数只能访问静态成员数据、其他静态成员函数和外部的其他函数。 静态成员函数有一个范围,他们不能访问的 this 指针。您可以使用静态成员函数来判断的某些对象是否已被创建。

    24030

    C++:09---静态成员常量成员

    一、静态成员(static) 先介绍一下什么是静态变量、静态函数 静态局部变量:存在域(全局数据区),作用域(块作用域) 静态全局变量:存在域(全局数据区),作用域(整个文件) 静态函数:存在域(全局数据区...静态数据成员 静态成员不属于某一个对象,而是属于整个(定义在数据段) 静态成员供所有对象共享,每个对象可以调用且修改。一个对象修改,其他对象也跟着变化 static成员变量可以在类型声明并初始化。...() { Cperson person1; person.age = 20;//调用并改变静态成员 //直接通过名就可调用 cout << Cperson::age; //...静态函数 因为静态函数不属于某一对象,所以函数内不存在this指针 静态成员函数不能被声明为const类型(“静态成员函数是属于的,而不是某个具体对象,在没有具体对象的时候静态成员就已经存在,静态成员函数不会访问到非静态成员...原因:静态函数在定义时就已经开辟内存空间,而普通成员只有当定义对象时开会开辟内存空间,所以调用普通成员会出错 普通函数内部可以调用静态成员,也可以调用普通成员

    1.6K40

    C++C++静态成员

    静态成员包括静态的数据成员静态成员函数!...定义时就为静态数据成员分配空间,不随对象的建立而分配空间。 static的成员变量不能在内进行初始化!...定义完之后就可以直接引用/访问, 引用方法: 1.名::静态成员 2.对象名.静态成员内的静态数据成员仅仅是对该成员的声明,同时还需要在外部进行定义。...因为它可以在未定义对象时就可以引用。因此静态成员函数不能访问本类中的非静态成员。(包括成员函数和数据成员)。 比如在前面定义的getNum()静态函数中,是无法调用其他的非静态方法和变量的!...中定义的静态数据成员可以代替全局变量,而且没有全局变量的缺点,作用域仅限于当前的作用域,防止了在其他修改成员

    55410

    《挑战30天C++入门极限》C++静态数据成员静态成员函数

    C++静态数据成员静态成员函数   在没有讲述本章内容之前如果我们想要在一个范围内共享某一个数据,那么我们会设立全局对象,但面向对象的程序是由对象构成的,我们如何才能在范围内共享数据呢...这个问题便是本章的重点:   声明为static的成员或者成员函数便能在的范围内共同享,我们把这样的成员称做静态成员静态成员函数。   ...便运行加1操作,静态成员的初始化应该在主函数调用之前,并且不能在的声明中出现,通过运行过程的观察我们发现,静态成员count的状态并不会随着一个新的对象的新建而重新定义,尽而我们了解到静态成员函数由于与对象无关系...根据静态成员的特性我们可以简单归纳出几点,静态成员的使用范围:   1.用来保存对象的个数。   ...(静态成员完全可以替代全局变量),这个例子的理解重点主要是要注意观察成员的析构顺序,通过对析构顺序的理解,使用析构函数来进行节点的脱链操作。

    69930

    C++大小和静态成员方法

    大小计算 空的大小为1字节 一个中,虚函数本身、成员函数(包括静态与非静态)和静态数据成员都是不占用对象的存储空间的 字节对齐的问题。...虚基指针:如果是虚继承,则子类的大小为:虚基的大小 + 4个字节(用来存放指向虚基对象的指针)+子类新增成员的大小。...sizeof(D) 静态成员变量 静态变量必须在外部定义和赋值 a 不能在 main() 函数中定义 b 不能在的构造函数中定义 必须要定义静态变量,否则该变量没有内存空间(中只是申明) 本身可以直接调用静态变量...静态方法可以被直接调用,但是同静态变量一样符合public、private、protect特性 静态成员函数不可以调用的非静态成员。...因为静态成员函数不含this指针。 静态成员函数不可以同时声明为 virtual或后缀const 函数。因为virtual就是用来区分是哪个对象调用了他,与静态方法矛盾。

    72250

    C++静态成员

    而在C++中,static除了这样的作用之外,还多了一项非常重要的功能——定义的属性和行为,这是基于对象程序设计的一个不可或缺的要素。...,上述的count可以在外初始化,像这样: int kitty::count = 0; 外初始化时,不能指定static关键字(static修饰静态成员只能放在内部),另外还需加上域解析符(kitty...使用域解析符来引用静态成员,比如: kitty::count; kitty::getCount(); 使用对象来引用静态成员,比如: kitty cuteCat; cuteCat.count; cuteCat.getCount...静态成员的内在涵义就是:他们是属于整个的属性和行为,而不依存于任何一个具体的个体。...这就解释了为什么静态方法不能引用非静态成员的原因。 总之,厘清一个语法概念背后的逻辑内涵是更重要的,脱离了这个,记再多的语法也是白扯。后续的编程语言文章,都遵循这个思路。

    77440

    C++ 静态数据成员静态成员函数

    中的数据成员成员函数定义或声明前以static关键词开头,即构成静态数据成员静态成员函数。...int minute; int sec; }; 2.静态数据成员的意义 C++为什么要进入静态数据成员这个概念,或者它有什么好处。...3.静态数据成员的特性 (1)静态数据成员的属性: 静态数据成员属于,而不属于某一个对象。...(2)静态数据成员的初始化: 静态数据成员内定义,而不能在内完成初始化,直接赋值和利用构造函数初始化都不可以。...没有对象,直接用名引用成员,这也恰恰说明了静态数据成员不属于任何对象,而属于本身。 (3)静态数据成员的引用: 从(2)中已经看到了,可以直接用名来引用静态数据成员

    1.5K50

    C++静态成员函数 ( 静态成员函数概念 | 静态成员函数声明 | 静态成员函数访问 | 静态成员函数只能访问静态成员 )

    一、静态成员函数简介 1、静态成员函数概念 静态成员函数归属 : 在 C++ 中 , 静态成员函数 是一种 特殊的函数 , 该函数属于 , 而不是属于 实例对象 ; 静态成员函数调用不依赖于对象...: 即使 没有创建 的 实例对象 , 也可以 通过 名:: 调用 中定义的 静态成员函数 ; 静态成员函数作用 : 静态成员函数 通常用于 执行与本身相关的操作 , 执行该函数 不涉及到 实例对象中的信息...//m_age = 10; cout << "静态成员函数被调用 : number = " << number << endl; } 访问 静态成员函数 时 , 可以使用 名:: 调用...静态成员函数 ; // 通过 名:: 调用 静态成员函数 Student::fun(); 还可以使用 对象....静态成员变量 // 使用 域操作符 访问 静态成员变量 // 名::静态成员变量名 cout << "Student::number = " << Student::number << endl

    1K20

    静态成员函数访问非静态数据成员C++

    静态数据成员 定义格式: static 类型名 静态数据成员名 ; 详解:由于静态数据成员属于本类的所有对象共享,不属于特定对象,因此在未产生对象时作用域就可见,即:在未产生的实例时,就可以对它进行操作...初始化: 类型 名 :: 静态数据成员 = 初始化值 ; 详解:静态数据成员必须在外初始化,不可在体内,因为:构造函数中,如果可以,则每次建立对象,都会对静态数据成员的值进行修改,这违背静态数据成员的使用目的...静态成员函数名 (实参表) ; 注意 外定义静态成员函数时,定义格式和普通成员函数定义格式相同,不再使用static修饰; 使用对象名和成员运算符(.)调用成员函数时,并非该函数属于某一对象,只是与对象间的桥梁...然而,静态成员函数不属于对象,无this指针。所以静态成员函数不能访问的默认非静态成员(非静态成员函数和非静态数据成员)。...非静态成员 ; 名 :: 非静态成员 ; 故:实例化对象即可完成对非静态数据成员的访问

    1.3K20

    C++静态成员

    C++中提供了静态成员。这是非常有必要的,因为我们程序设计者是需要这样特性。 静态数据成员 对于非静态数据成员,每个对象都有自己的拷贝。而静态数据成员被当作是成员。...(的每一个实例都共享这一个成员)无论这个的对象被定义了多少个,静态数据成员在程序中只有一份拷贝,由该类型的所有对象共享访问。(包括派生的对象)。这种需求我们还是经常有的。...C++提供了这样得方法,但是该方法得使用比较特殊。静态数据成员必须在外初始化一下,否则会导致编译错误。 注:不要试图在头文件中定义(初始化)静态数据成员。...静态函数成员 静态函数成员也是属于整个的,无需对象我们也能访问它。这样在大多数情况下可能会出错(比如你在没有创建对象的时候,访问了一个非静态数据成员),因此C++静态成员函数做了限制。...它只能操作静态数据成员静态函数成员的普通函数可以访问它们。 这种函数也很有必要,因为他能在我们不创建对象的情况下,让我们知道静态数据成员是什么样子。

    47820

    C++静态成员变量 ( 静态成员变量概念 | 静态成员变量声明 | 静态成员变量初始化 | 静态成员变量访问 | 静态成员变量生命周期 )

    一、静态成员变量概念 1、静态成员变量引入 在 C++ 中 , 静态成员变量 又称为 静态属性 ; 静态成员归属 : 静态成员变量 是特殊的成员变量 , 是 所有的 成员 , 而不是对象所有的成员...static int number; }; 3、静态成员变量初始化 静态成员变量 初始化 : 静态成员变量 是在 使用时 , 在的外部 进行 初始化 ; Student 静态成员 成员变量...: 只对 内部已定义的 静态成员变量 进行单纯的赋值 ; // 在函数中为 静态成员变量 赋值 Student::number = 2; 4、静态成员变量访问 静态成员变量访问 : 使用域操作符访问...: 格式为 名::静态成员变量名 ; // 使用 域操作符 访问 静态成员变量 // 名::静态成员变量名 cout << "Student::number = " << Student:...<em>成员</em>变量访问有两种方式 : 使用 域操作符 访问 <em>类</em><em>静态</em><em>成员</em>变量 : <em>类</em>名::<em>静态</em><em>成员</em>变量名 ; // 使用 域操作符 访问 <em>类</em><em>静态</em><em>成员</em>变量 // <em>类</em>名::<em>静态</em><em>成员</em>变量名 cout << "Student

    1.1K20

    C++ static静态成员

    因此静态成员变量和静态成员函数不需要通过对象就能访问,因为他是共享的。...访问静态成员的方式 01 名::成员名 A::PrintNum(); 02 对象名.成员名 A a; a.PrintNum(); 03 指针->成员名 A *p = new A(); p->PrintNum...静态成员变量本质上是全局变量,哪怕一个对象都不存在,静态成员变量也存在; 2. 静态成员函数本质上是全局函数; 3....设置静态成员这种机制的目的是将和某些紧密相关的全局变量和函数写在里面,看上去像是一个整体,易于维护和理解; 4. 在静态成员函数中,不能访问非静态成员变量,也不能调用非静态成员函数; 5....静态成员必须在定义的文件中对静态成员变量进行初始化,否则会编译出错。?

    58060

    C++的this指针,静态成员,友元函数友元

    ---- 1. this指针 在上篇讲C++,对象,封装,继承(派生),多态的时候,this指针出现在成员函数中,并使用->成员提取符操作成员变量。...在 C++ 中,每一个对象都能通过 this 指针来访问自己的地址,this 指针是所有成员函数的隐含参数,实际上成员函数默认第一个参数为T* const register this,this指针在成员函数的开始执行前构造的...静态成员 在变量或者函数前面加上关键字:static,它就变了一个静态变量或者静态函数,当static出现在中被修饰成员中,被成为静态成员。...而静态成员在无需构造对象情况下,可以使用名访问。...友元函数友元 所谓友元函数,就是在中,用friend关键字声明一个函数,这个函数的声明在中,但不作为成员函数,虽然友元函数不属于成员函数,却可以访问中的成员,不论成员是public,pirvate

    1.5K10
    领券