C++静态成员方法

C++类静态方法教程

C++ 类的静态成员方法的需要使用 static 来修饰,且 C++ 类的静态成员方法与 静态成员变量 类似,静态成员方法不属于任何对象,只属于类。同时,C++ 的静态成员函数只能访问静态成员。

编译器在编译一个普通成员函数时,会隐式地增加一个形参 this,并把当前对象的地址赋值给 this,所以普通成员函数只能在创建对象后通过对象来调用,因为它需要当前对象的地址。

而静态成员函数可以通过类来直接调用,编译器不会为它增加形参 this,它不需要当前对象的地址,所以不管有没有创建对象,都可以调用静态成员函数。

C++静态成员方法详解

定义

class ClassName { public: static Type funcName(paramterType paramter) { } };

参数

参数 描述
static 定义静态成员方法使用的关键字。
Type 静态成员方法的返回值类型。
funcName 静态成员方法名。
paramterType 静态成员方法参数类型。
paramter 静态成员方法形参。

说明

我们在 ClassName 类里面,定义了一个静态成员方法 funcName。

C++静态成员方法调用

定义

C++ 的静态方法调用方法有两种,一种是通过 “类名::方法名” 的方法来调用,另一种是通过 “对象.方法名” 的方法来调用。

静态方法调用详解

语法

ClassName::funcName(params)

参数

参数 描述
ClassName 类。
funcName 静态成员方法。
params 参数。

说明

通过 “类名::方法名” 的方法,调用静态方法。

通过实例调用静态方法详解

语法

instance.funcName(params)

参数

参数 描述
instance 类的实例。
funcName 类方法。
params 参数。

说明

通过 “对象.方法名” 的方法,调用静态方法。

案例

类静态方法调用

通过对象访问类静态方法

#include <iostream> using namespace std; class Student { public: Student() { } static void sayHello() { cout << "Hello, I am student" << endl; } }; int main() { cout << "嗨客网(www.haicoder.net)\n" << endl; Student stu; stu.sayHello(); return 0; }

程序运行后,控制台输出如下:

14_C静态成员方法.png

我们创建了一个类 Student,接着,为该类添加了一个静态成员方法 sayHello,其中类静态方法必须使用 static 修饰,最后,我们使用 “对象.类静态方法” 的形式调用类静态成员方法。

类静态方法调用

通过类访问类静态方法

#include <iostream> using namespace std; class Student { public: Student() { } static void sayHello() { cout << "Hello, I am student" << endl; } }; int main() { cout << "嗨客网(www.haicoder.net)\n" << endl; Student::sayHello(); return 0; }

程序运行后,控制台输出如下:

15_C静态成员方法.png

这次,我们使用了 “类名::静态方法” 的形式访问了类的静态成员函数。

C++类静态方法总结

C++ 类的静态成员方法的需要使用 static 来修饰,且 C++ 类的静态成员方法与静态成员变量类似,静态成员方法不属于任何对象,只属于类。同时,C++ 的静态成员函数只能访问静态成员。