static静态函数 类的静态成员函数可以直接访问该类的静态成员和非静态成员,那非静态成员函数都可以访问什么?
类的静态成员函数可以直接访问该类的静态成员和非静态成员,那非静态成员函数都可以访问什么?
相反,应该是“类的非静态成员函数可以直接访问类的静态和非静态成员”,静态成员函数只能访问类的静态成员。
静态成员函数为什么不能访问本类中的非静态成员?
程序最终将在内存中执行,只有当变量占据内存中的某个位置时才能访问它们。类的静态成员(变量和方法)属于类本身,在加载类时会分配内存,可以通过类名直接访问内存。非静态成员(变量和方法)属于类对象,因此只有在生成类对象(创建类实例)然后通过类对象(实例)访问时才会分配内存。在静态成员中访问类的非静态成员时出错的原因是,当该类的非静态成员不存在时,该类的静态成员已经存在。当然,访问内存中不存在的东西时会出错:类ca{私人:INTA//非静态成员,创建类实例时分配内存,不同的类实例对应不同的内存区域
classA{公众:staticintnumberfriendvoidhanshu()}void Hanshu(){cout<<A::number}inta::number=456//请注意,在初始化静态成员intmain(){aahanshu()系统(“pause”)时有一个错误。}还请注意,不能使用友元函数访问所有成员,这种理解是错误的,正确的理解是friend函数可以通过类的对象访问类的所有成员,而friend函数不能直接访问类的私有成员,如类a{I}公众:friendvoidf()}void f(){a=1}//这将导致错误。它只能通过类的对象访问,比如void f(){Amama。A=1}//这是正确的。如果f不是朋友,那么ma。A是错误的。
static静态函数 c语言static函数 类的成员函数包括哪些
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。