在C ++中,如果你实例化一个类的对象,那么每个对象都是如此 对象的所有方法都被复制为新对象吗?
我试图指出一个具有两个不同对象的类的方法,但我遇到了问题 指向成员的指针。
有什么想法吗?
答案 0 :(得分:7)
在C ++中,如果你实例化一个类的对象,那么对于每个对象,都会为新对象复制所有类的方法吗?
不,成员函数通常不会复制到任何地方。相反,对于该类类型的每个对象,将不同的隐式参数this
传递给任何非静态成员函数。
答案 1 :(得分:6)
不,这绝对是不是真的。
类实例(对象)包含数据成员。函数成员看起来像是在“类”中,但这只适用于作用域等等:您的函数代码在类型中不“存在”,并且它当然不存在于对象†
† I think it could, theoretically,标准并不完全禁止它。但老实说,没有。只是没有。
答案 2 :(得分:1)
类的代码只存在一次。
要获取指向成员函数的指针(可能是方法的意思),请查看std::function,并将函数调用附加到不同的对象,请查看std::bind。