比安卡·幽兰黛尔·阿塔吉娜 2023-02-17 20:01 采纳率: 80%
浏览 42
已结题

(C++)对象中方法

C++的类中的方法是否有地址,改怎么取地址
在类的方法中使用static修饰变量,对象1对方法中静态变量自增,同类下的方法2中的静态变量会接着方法1中的静态变量继续自增
两个对象的方法是否存储在同一个地址下

img

  • 写回答

3条回答 默认 最新

  • qq_46161207 2023-02-17 20:56
    关注

    在C++中,类中的方法是有地址的,因为类的方法本质上是函数。可以通过函数指针来获取类的方法地址。

    例如,假设有一个类Foo,其中有一个成员函数func,可以通过以下方式获取该函数的地址:

    
    Foo f;
    void (Foo::*funcPtr)() = &Foo::func;
    

    这里使用了成员函数指针的语法,将func函数的地址存储在funcPtr变量中。在调用该函数时,需要通过对象指针或对象引用来调用,例如:

    
    (f.*funcPtr)();
    

    关于类中的静态变量,静态变量是类的所有对象共享的,因此在一个对象的方法中修改静态变量的值会影响到其他对象的静态变量的值。这也就是为什么在题目中描述的情况下,对象1对静态变量自增之后,同类下的对象2的静态变量会接着自增。这是因为静态变量在程序的整个生命周期内只有一份,而且在类定义中被声明为static时,它们不是对象的一部分,而是与类本身相关联的。

    关于类的方法的地址,不同的对象调用同一个类的方法时,它们所调用的方法是在内存中存储在不同的地址中的,因此两个对象的方法并不存储在同一个地址下。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 2月26日
  • 已采纳回答 2月18日
  • 创建了问题 2月17日