C++ 对象是否有不同的函数成员或共享它们?

C++ 对象是否有不同的函数成员或共享它们?,c++,class,C++,Class,请注意,对rect.area()的调用不会给出与对rectb.area()的调用相同的结果。这是因为类Rectangle的每个对象都有自己的变量width和height,因为它们在某种程度上也有自己的函数成员set_value和area,它们对对象自己的成员变量进行操作 从某种意义上讲,这意味着什么?? 这是否意味着函数成员在类的对象之间共享 从某种意义上讲,这意味着什么??这是否意味着函数成员在类的对象之间共享 对 “在某种程度上”,作者可能打算描述代码是共享的,而数据(成员变量)不是共享的。

请注意,对rect.area()的调用不会给出与对rectb.area()的调用相同的结果。这是因为类Rectangle的每个对象都有自己的变量width和height,因为它们在某种程度上也有自己的函数成员set_value和area,它们对对象自己的成员变量进行操作

从某种意义上讲,这意味着什么?? 这是否意味着函数成员在类的对象之间共享

从某种意义上讲,这意味着什么??这是否意味着函数成员在类的对象之间共享

“在某种程度上”,作者可能打算描述代码是共享的,而数据(成员变量)不是共享的。成员变量对于每个对象都是唯一的,并且这些方法获取一个指向对象数据的指针作为其第一个参数(该参数不是每个方法的参数列表的一部分,但通过指针在方法中可以隐式访问)。通过该指针,相同(共享)代码可以处理不同的数据(同一类的不同实例)


其他语言(如参数名为self)需要为每个成员函数显式定义参数。

是的,一个类的函数代码在内存中只加载一次,与该类的对象数无关。因此,通过这种方式,它的函数成员在类的对象之间共享。(也许那本书/网站中的声明可以用更好的措辞)

因此,无论调用
rect.set_值(3,4)
还是
rectb.set_值(5,6)
,在内存中运行的代码都是相同的,尽管结果可能不同,因为它们使用的值不同(接收的参数和/或数据成员值)

Rectangle rect, rectb;
rect.set_values (3,4);
rectb.set_values (5,6);
rect.area();
rectb.area();