C++超详细知识点(六):类的static静态成员和const成员

您所在的位置:网站首页 const为什么可以修改对象的属性 C++超详细知识点(六):类的static静态成员和const成员

C++超详细知识点(六):类的static静态成员和const成员

2024-07-10 12:24| 来源: 网络整理| 查看: 265

目录 1. Static静态成员(1)静态成员变量声明和定义访问 (2)静态成员函数声明和定义调用对成员变量的访问权限 2. const成员(1)const成员函数(2)const成员变量

1. Static静态成员 (1)静态成员变量 声明和定义

  静态成员变量在类声明中进行声明,但在类外进行定义和初始化。静态成员变量只有一个副本,它被所有属于类的对象所共享。

class MyClass { public: static int staticVar; // 在类内中进行声明 int Var; //非静态成员变量 }; // 在类外定义和初始化操作,调用时使用类名即可。 int MyClass::staticVar = 0; 访问

静态成员变量访问时有两种方式:①通过类名直接访问。 ②通过实例化对象访问。 而非静态成员变量不可以通过类名直接访问,必须通过实例化的对象访问!

#include class MyClass { public: static int staticVar; // 在类内中进行声明 int Var; //非静态成员变量 }; // 在类外定义和初始化操作,调用时使用类名即可。 int MyClass::staticVar = 0; int main() { // 静态变量通过类名访问 MyClass::staticVar = 42; // 通过对象名访问,但通常推荐使用类名访问 MyClass obj; obj.staticVar = 99; /* 非静态变量不可以通过类名直接访问,必须通过实例化的对象访问! MyClass::Var =42; */ obj.Var=42; }

  但是在非静态成员函数中,可以直接访问类的静态成员变量而无需使用类名限定。在成员函数内部,编译器知道它是属于哪个类的,因此可以直接访问该类的静态成员。所以,在非静态成员函数内,可以省略类名,直接使用静态成员变量的名称。

(2)静态成员函数 声明和定义

  静态成员函数在类声明中进行声明,并在类外进行定义。与普通成员函数不同,静态成员函数没有隐含的 this 指针,因为它们不依赖于特定的对象。

class MyClass { public: static void staticFunction(); // 静态成员函数的声明 }; // 静态成员函数的定义 void MyClass::staticFunction() { // 静态成员函数的实现 } 调用

  静态成员函数可以通过类名或实例化对象名来调用。由于没有隐含的 this 指针。而非静态成员函数只能通过实例化对象名来调用。

#include class MyClass { public: static void staticFunction(); // 静态成员函数的声明 void nonStaticFunction(); //非静态成员函数的声明 }; // 静态成员函数的定义 void MyClass::staticFunction() { // 静态成员函数的实现 } // 非静态成员函数的定义 void MyClass::nonStaticFunction() { // 静态成员函数的实现 } int main() { // 可以直接通过类名调用 MyClass::staticFunction(); // 也通过对象名调用,但通常推荐使用类名调用 MyClass obj; obj.staticFunction(); obj.nonStaticFunction(); } 对成员变量的访问权限

静态成员函数: 不能直接访问非静态成员变量或函数,只能访问静态成员变量或函数。 非静态成员函数: 可以直接访问非静态成员变量或函数,也可以直接访问静态成员变量或函数。

#include class MyClass { public: static void staticFunction(); // 静态成员函数的声明 void nonStaticFunction(); //非静态成员函数的声明 int a; static int b; }; // 初始化静态成员变量 b int MyClass::b = 0; // 静态成员函数的定义 void MyClass::staticFunction() { // 无法直接访问非静态成员变量 a // std::cout


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3