收费底的网站有吗,整站排名优化公司,彩票网站注册,在线设计平台那个家比较好文章目录 一、静态成员函数简介1、静态成员函数概念2、静态成员函数声明3、静态成员函数访问4、静态成员函数只能访问静态成员 二、代码示例 - 静态成员函数 一、静态成员函数简介 1、静态成员函数概念 静态成员函数归属 : 在 C 类中 , 静态成员函数 是一种 特殊的函数 , 该函数… 文章目录 一、静态成员函数简介1、静态成员函数概念2、静态成员函数声明3、静态成员函数访问4、静态成员函数只能访问静态成员 二、代码示例 - 静态成员函数 一、静态成员函数简介 1、静态成员函数概念 静态成员函数归属 : 在 C 类中 , 静态成员函数 是一种 特殊的函数 , 该函数属于类 , 而不是属于 类实例对象 ;
静态成员函数调用不依赖于对象 : 即使 没有创建 类 的 实例对象 , 也可以 通过 类名:: 调用 类中定义的 静态成员函数 ; 静态成员函数作用 : 静态成员函数 通常用于 执行与类本身相关的操作 , 执行该函数 不涉及到 类实例对象中的信息 , 也不能在 静态成员函数 中访问 普通的 成员变量 和 成员函数 ; 2、静态成员函数声明 静态成员函数声明 : 使用 static 关键字 修饰 成员函数 , 就可以将 普通的成员函数 转为 静态成员函数 ;
如 : 下面的 void fun() 普通成员函数 , 在 函数之前添加 static 关键字 , static void fun() 就变成了 静态成员函数 ;
class Student
{
public:static void fun(){cout 静态成员函数被调用 : number number endl;}
};3、静态成员函数访问 静态成员函数访问 :
使用 类名 和 域操作符 访问 : // 通过 类名:: 调用 静态成员函数Student::fun();使用 对象 访问 : // 通过 对象. 调用 静态成员函数s.fun();4、静态成员函数只能访问静态成员 静态成员函数内容要求 : 静态成员函数 只能访问
静态成员变量其他静态成员函数
静态成员函数 不能访问 非静态成员变量 或 非静态成员函数 ,
普通的 成员变量 和 成员函数 , 需要 通过 类 的 实例对象 来访问 , 需要 依托于 对象才能存在 ,
而 静态成员函数 可以在 不创建 实例对象的前提下被调用 , 因此 静态成员函数中 不能访问 非静态成员 ; 如果在静态成员函数中 , 访问非静态成员 , 会报如下错误 :
1------ 已启动生成: 项目: HelloWorld, 配置: Debug Win32 ------
1Hello.cpp
1Y:\002_WorkSpace\002_VS\HelloWorld\HelloWorld\Hello.cpp(22,3): error C2597: 对非静态成员“Student::m_age”的非法引用
1已完成生成项目“HelloWorld.vcxproj”的操作 - 失败。生成: 成功 0 个失败 1 个最新 0 个跳过 0 个 二、代码示例 - 静态成员函数 下面的代码 , 是在 之前 的 静态成员变量 示例代码的基础上 进行的 ;
在 Student 类中定义静态成员函数 , 使用 static 关键字修饰函数 ;
注意 : 不要在 静态函数中 访问 非静态成员 , 否则会报错 对非静态成员“Student::m_age”的非法引用 ; static void fun(){// 静态成员函数 中 访问非静态成员会报错// error C2597: 对非静态成员“Student::m_age”的非法引用//m_age 10;cout 静态成员函数被调用 : number number endl;}访问 类的 静态成员函数 时 , 可以使用 类名:: 调用 静态成员函数 ; // 通过 类名:: 调用 静态成员函数Student::fun();还可以使用 对象. 调用 静态成员函数 ; // 通过 对象. 调用 静态成员函数s.fun();代码示例 :
#include iostream
using namespace std;class Student
{
public:// 带参构造函数Student(int age, int height){m_age age;m_height height;cout 执行 Student 的构造函数 endl;}~Student(){cout 执行 Student 的析构函数 endl;}static void fun(){// 静态成员函数 中 访问非静态成员会报错// error C2597: 对非静态成员“Student::m_age”的非法引用//m_age 10;cout 静态成员函数被调用 : number number endl;}public:int m_age; // 年龄int m_height; // 身高// 在类内部定义静态成员static int number;
};// 在类外部初始化静态成员变量
int Student::number 1;int main() {// I. 静态成员变量// 使用 域操作符 访问 类静态成员变量// 类名::静态成员变量名cout Student::number Student::number endl;// 在函数中为 类 静态成员变量 赋值Student::number 2;// 创建 Student 类型对象Student s(10, 150);// 使用 对象 访问 类静态成员变量// 对象名称.静态成员变量名cout s.number s.number endl;// II. 静态成员函数// 通过 类名:: 调用 静态成员函数Student::fun();// 通过 对象. 调用 静态成员函数s.fun();// 控制台暂停 , 按任意键继续向后执行system(pause);return 0;
}执行结果 :
Student::number 1
执行 Student 的构造函数
s.number 2
静态成员函数被调用 : number 2
静态成员函数被调用 : number 2
请按任意键继续. . .