首页 > 编程知识 正文

静态函数调用非静态函数,静态成员函数访问非静态成员

时间:2023-05-03 21:44:59 阅读:166610 作者:4178

初级理解:

类中的成员变量在创建对象(即实例化(new ) )后分配内存,就像雕像恢复一样。 另一方面,静态成员函数在创建类时已经创建。 当您尝试在静态成员函数中访问非静态成员变量时(不知道已访问的对象),人机对话会变得尴尬。

本质理解:

this指针指向被调用的成员函数所属的对象,隐式附加到每个非静态成员函数上,并在为实例化对象分配内存后显示。 相反,静态成员函数属于类,不属于任何对象,因此静态成员函数没有this指针,从而确定静态成员函数无权访问此类的非静态成员。

静态成员函数用于访问和处理静态数据成员。 虽然并非绝对不能引用此类的非静态成员,但如果没有创建对象,则无法访问默认对象,因为您不知道要查找的对象。 如果需要引用此类的非静态成员,则必须添加对象名称和成员运算符“.”,以提前通知编译器实例化对象。

相关知识点:

*this是对象主体,本质是(class name ) * const this。 这意味着指针指向的值是不可修改的,而指针指向的值是可以修改的。 如果指定只读,则可以使用常规函数,mutable可以修改this指向的值

普通对象只能调用普通函数

函数的静态和非静态差异:

静态函数与类生死与共,程序结束后内存消失。 如果不是静态的,它会动态加载到内存中,调用结束,内存消失。 这意味着无需创建对象就可以调用静态函数。 " : " )。 对于非静态函数,必须在调用对象之前创建对象。

我只是使用了a的类型,而不意味着从对象名称调用静态成员函数(如a.volume )的此函数属于对象a。

静态特性:

1 .随着类的加载而加载2 .存在于对象之前

3 .所有对象共享4 .可以直接用类名调用

静态使用注意事项:

1 .静态方法只能访问静态成员。 包含成员变量和成员方法

非静态方法可以静态或非静态访问

2 .不能在静态方法中定义this,super关键字

一个类中有多个类实例,因为一个静态变量只有一个内存空间,但这些类实例中的静态变量共享相同的内存空间。 静态方法不能使用this,super关键字,因为静态方法优先于对象的存在。

3 .主函数是静态的。

静态优势和劣势:

利:对象的共享数据存储在单独的空间里,节约空间,可以用类名调用

缺点:访问限制(仅限静态访问) ) ) ) ) ) ) )。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。