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

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

一、静态成员函数简介 1、静态成员函数概念 静态成员函数归属 : 在 C++ 类中 , 静态成员函数 是一种 特殊的函数 , 该函数属于类 , 而不是属于 类实例对象 ; 静态成员函数调用不依赖于对象...========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ========== 二、代码示例 - 静态成员函数 ---- 下面的代码 , 是在 之前 的 静态成员变量 示例代码的基础上...”的非法引用 " ; static void fun() { // 静态成员函数 中 访问非静态成员会报错 // error C2597: 对非静态成员“Student::m_age”的非法引用...调用 静态成员函数 s.fun(); 代码示例 : #include "iostream" using namespace std; class Student { public: // 带参构造函数...中 访问非静态成员会报错 // error C2597: 对非静态成员“Student::m_age”的非法引用 //m_age = 10; cout 静态成员函数被调用 : number

1.4K20

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

在类中的数据成员或成员函数定义或声明前以static关键词开头,即构成静态数据成员与静态成员函数。...int minute; int sec; }; 2.静态数据成员的意义 C++为什么要进入静态数据成员这个概念,或者它有什么好处。...我们可以这样理解这件事,在构造函数的博客里提到:类中的构造函数在实例化对象时被系统调用,然后实现对成员数据的赋值工作,显然这些数据成员属于对象。而静态数据成员属于类,不属于任何一个对象。...没有对象,直接用类名引用成员,这也恰恰说明了静态数据成员不属于任何对象,而属于类本身。 (3)静态数据成员的引用: 从(2)中已经看到了,可以直接用类名来引用静态数据成员。...(2)静态成员函数的访问: 静态成员函数只能访问本类中的静态数据成员。 非静态成员函数可以访问本类中的静态数据成员与非静态数据成员。

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

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

    静态成员函数 定义格式: static 返回类型 静态成员函数名 (参数表) ; 调用方式: 类名 :: 静态成员函数名 (实参表) ; 对象名 ....静态成员函数名 (实参表) ; 注意 类外定义静态成员函数时,定义格式和普通成员函数定义格式相同,不再使用static修饰; 使用对象名和成员运算符(.)调用成员函数时,并非该函数属于某一对象,只是类与对象间的桥梁...,为了能处理静态数据成员; 静态成员函数不能默认引用本类非静态数据成员的原因: 当调用一个对象的非静态成员函数时,系统会将该对象的起始地址赋予成员函数的this指针。...然而,静态成员函数不属于对象,无this指针。所以静态成员函数不能访问类的默认非静态成员(非静态成员函数和非静态数据成员)。...() { Point P1(5), p2(10); Point::f1(P1); //静态成员函数调用时一般使用 类名:: Point::f1(p2);

    1.3K20

    C++类的静态数据成员和静态成员函数

    我们需要一个成员为所有对象所公有,而且在需要更新这个公有属性的时候只需修改一次。 因此,C++提供了静态数据成员来描述类对象相同的属性。...静态成员函数 一般都是在静态成员函数中修改静态数据成员,在刚刚的手机类声明中的成员函数: static void change(); 就是静态成员函数。...我们给它来一个类外定义: void redmik30pro::change() { battery-=10; } 要注意的是,静态成员函数只能访问静态数据成员和静态成员函数,不能访问非静态数据成员,如果要访问非静态数据成员...但是非静态成员函数可以任意地访问静态成员函数和静态数据成员。 那静态成员函数存在的意义是什么?...首先,可能你在做题的时候,题目要求你使用静态成员函数完成任务…… 开个玩笑啦…… 静态成员函数没有this指针,因为它在类创建的时候就存在了,在没有创建类对象的时候就已经存在静态成员函数,而普通函数必须在类对象被创建的时候才能被使用

    19230

    C++(静态成员)

    static在C语言中的作用,简要地说就是为了让同名的变量或函数在各个文件之间彼此隔绝,打消他们之间的互相影响。...而在C++中,static除了这样的作用之外,还多了一项非常重要的功能——定义类的属性和行为,这是基于对象程序设计的一个不可或缺的要素。...静态数据必须在类外初始化(const型数据除外),未初始化的话不能访问。这个跟C语言中的静态变量不同(静态变量未初始化的话会被自动初始化为0,还记得吗?)...但是静态方法只能引用静态数据,只能调用其他静态方法,比如上面的示例中,getCount()方法只能访问count数据,访问其他的非静态数据或者调用其他的非静态方法都会报错。...(); 以上就是静态类成员的语法点,记下他们是必须的,但对你设计程序代码并不会有多大的帮助,因为学习编程并不是为了考试,你必须理解这些语义机制背后的逻辑和内涵,只有那样他们才能为你所用,才能成为你私人武器库中的又一把利刃

    78140

    C++之静态成员变量和静态成员函数学习总结

    今天继续分享c++的文章,学习还是不能落下,flag未完成,任务艰巨,好好学习。...1、c++中可以定义静态成员变量: 静态成员变量属于整个类所有 静态成员变量的生命期不依赖于任何对象(上面的程序,每个对象的成员变量是独立的,所以打印出的mCount的值分别为1) 可以通过类名直接访问公有静态成员变量...1、在C++中可以定义静态成员函数: 静态成员函数是类中特殊的成员函数 静态成员函数属于整个类所有 可以通过类名直接访问公有静态成员函数 可以通过对象名访问公有静态成员函数 2、静态成员函数的定义: 直接通过...static关键字修饰成员函数: class Test { public:   static void Func1()   {}   static int Func2(); } 静态成员函数代码演示...所有对象共享 Yes Yes 隐含this指针 No Yes 访问普通成员变量(函数) No Yes 访问静态成员变量(函数) Yes Yes 通过类名直接调用 Yes No 通过对象名直接调用 Yes

    59830

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

    C++类静态数据成员与类静态成员函数   在没有讲述本章内容之前如果我们想要在一个范围内共享某一个数据,那么我们会设立全局对象,但面向对象的程序是由对象构成的,我们如何才能在类范围内共享数据呢...这个问题便是本章的重点:   声明为static的类成员或者成员函数便能在类的范围内共同享,我们把这样的成员称做静态成员和静态成员函数。   ...vist(); Internet::Sc();//静态成员函数的调用 Internet b("中国软件开发实验室","www.cndev-lab.com");...Internet::Sc(); fn(b); cin.get(); }   上面代码我们用了几种常用的方式建立对象,当建立新对象并调用其构造函数的时候,静态成员cout...便运行加1操作,静态成员的初始化应该在主函数调用之前,并且不能在类的声明中出现,通过运行过程的观察我们发现,静态成员count的状态并不会随着一个新的对象的新建而重新定义,尽而我们了解到静态成员函数由于与对象无关系

    70130

    C++之静态成员

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

    47920

    C++ static静态成员

    基本概念 静态成员:在定义前面加了 static 关键词的成员。 以下面的代码例子,来学习 static 关键词: ?...等于 4 02 静态成员函数 普通成员函数必须具体作用于某个对象,而静态成员函数并不具体作用于某个对象。...因此静态成员变量和静态成员函数不需要通过对象就能访问,因为他是共享的。...静态成员变量本质上是全局变量,哪怕一个对象都不存在,类的静态成员变量也存在; 2. 静态成员函数本质上是全局函数; 3....设置静态成员这种机制的目的是将和某些紧密相关的全局变量和函数写在类里面,看上去像是一个整体,易于维护和理解; 4. 在静态成员函数中,不能访问非静态成员变量,也不能调用非静态成员函数; 5.

    58160

    C++静态类成员

    静态类成员就是不管这个类是否有已实例化的对象存在,这个成员都一直存在。 也就是说,静态类成员是绑定在类上的,而不是绑定在对象上的。 声明静态类成员的方式就是在函数前加入static关键字。...静态类成员通常适用于当一个类的所有对象之间需要共享同一份数据的时候,这样子能节省空间,提高效率。 在C++11之前,只有int或者enum类型能在声明的时候被初始化。...(但是C++11及以后则不存在这个问题) 如何访问静态数据成员? 对于public的静态数据成员,我们只需要用类似于 Test::data 这样子的格式来访问即可。...对于private或者protected的静态数据成员,我们需要为他们创建一个静态成员函数来返回他们的值。同样的,静态成员函数是绑定在类上而不是在对象上的。...代码: Employee.h #pragma once #include class Employee { public: Employee(const std::string&, const

    66930

    第十一章 C++成员函数与静态成员详解

    第十一章 C++成员函数与静态成员详解 1. 概述 在C++中,成员函数是定义在类内部的函数,用于操作类的对象。静态成员是属于整个类而不是类的对象的成员。...本文将详细讲解C++中的成员函数和静态成员,并结合代码和实际案例进行演示。 2. 成员函数的定义和使用 2.1 成员函数的定义 成员函数由两部分组成:声明和定义。...class MyClass { public: static void staticFunction() { // 静态成员函数的函数体 } }; // 调用静态成员函数...它包含一个items向量用于存储添加的物品,并使用itemCount静态成员变量来记录购物车对象的数量。 通过调用成员函数addItem和removeItem,我们可以在购物车中添加和移除物品。...调用成员函数displayItems可以显示购物车中的所有物品。 静态成员函数getItemCount可以返回购物车对象的总数。

    5900

    实战C++对象模型之成员函数调用

    先说结论:C++的类成员函数和C函数实质是一样的,只是C++类成员函数多了隐藏参数this。...通过本文的演示,可以看见这背后的一切,完全可C函数方式调用C++类普通成员函数和C++类虚拟成员函数。 为了实现C函数方式调用C++类成员函数,准备两个文件:。...1) 被调用的C++类成员函数源代码文件aaa.cpp #include  // fprintf class X { public: void xxx(); private: int m; int n...$ g++ -g -o libaaa.so aaa.cpp -fPIC -shared 2) 调用的C++类成员函数源代码文件bbb.cpp #include  // dlopen #include...// 值为aaa.cpp中类X的成员函数xxx的名字, // 因为C++编译器会对类X的成员函数xxx名字编码,所以实际名字不会是xxx, // 本文测试环境xxx编码后的名为_ZN1X3xxxEv,

    1K10

    【C++】C++类的静态成员

    类的静态成员包括静态的数据成员和静态的成员函数!...静态成员函数 在声明成员函数时在函数前添加static关键字就定义了静态成员函数。...CTime::getNum(); time.getNum(); 静态成员函数一般是为了处理静态的数据成员。 与一般成员函数的区别:非静态成员函数有this指针,静态成员函数没有this指针。...因此静态成员函数不能访问本类中的非静态成员。(包括成员函数和数据成员)。 比如在前面定义的getNum()静态函数中,是无法调用其他的非静态方法和变量的!...源代码下载地址: GITHUB源码下载地址: 【点我进行下载】 本文章由[谙忆]编写, 所有权利保留。 欢迎转载,分享是进步的源泉。

    55810

    C++ 类的静态成员

    如果其中一个对象调用函数将其改变了,那么其他成员在访问这个静态成员变量的时候的值都是改变之后的; ④、只要在类中定义了类的静态成员变量,那么就占用存储空间了,不管有没有定义这个类的对象,因为静态成员变量不属于任何类对象...; ⑦、不能用构造函数的参数初始化表的形式对静态成员进行初始化操作; ⑧、静态数据成员既可以通过对象名引用,也可以通过类名来直接引用,具体代码见视频教程!...静态函数 如果把函数成员声明为静态的,就可以把函数与类的任何特定对象独立开来。静态成员函数即使在类对象不存在的情况下也能被调用,静态函数只要使用类名加范围解析运算符 :: 就可以访问。...静态成员函数只能访问静态成员数据、其他静态成员函数和类外部的其他函数。 静态成员函数有一个类范围,他们不能访问类的 this 指针。您可以使用静态成员函数来判断类的某些对象是否已被创建。...静态成员函数和成员函数的区别 静态成员函数没有 this 指针,只能访问静态成员(包括静态成员变量和静态成员函数)。

    25830

    C++类的成员函数 | 成员函数

    C++成员函数的性质 在C++中,类的成员函数是函数的一种,它有返回值和函数类型,它与一般函数的区别只是:  属于一个类的成员,出现在类体中。...C++在使用类函数时,要注意调用它的权限以及它的作用域,私有的成员函数只能被本类中的其他成员函数所调用,而不能被类外调用,成员函数可以访问本类中任何成员,可以引用在本作用域中有效的数据。 ...在C++中,有的函数并不是准备为外界调用的,而是为本类中的成员函数所调用的,就应该将它们指定为 private。...C++类外定义成员函数 上述所讲成员函数是在类体中定义的,在C++中也可以在类体中只写成员函数的声明,而在类的外面进行函数定义。...以上,如果你看了觉得对你有所帮助,就给小林点个赞叭,这样小林也有更新下去的动力,跪谢各位父老乡亲啦~ C++类的成员函数 | 成员函数 更多案例可以go公众号:C语言入门到精通

    1.9K74

    C++:静态成员与友元

    静态成员 静态成员包含静态数据成员和静态成员函数,那么为什么会存在静态成员?...如果将其放在全局变量中,那么 C++ 的封装性将受到影响,静态成员案例见以下程序片段 class student{ public: student(string nName =...stuNum--; } 然后在 C++ 工程文件中包含 student.cpp 和 main()函数所在 cpp 文件即可,这是静态数据成员的标准使用方法。...静态成员函数 同样的,静态成员函数也属于类,不与类的任何一个对象相联系,所以在调用静态成员函数时,并不需要使用对象来进行引导,标准方法为:类名::静态成员函数名(); 下面程序片段演示了静态成员函数的调用方法...但静态成员函数可以通过对象指针等方法访问对应对象中的非静态成员。

    71110
    领券