问题:成员函数与成员变量隶属于具体的对象吗?
先解释一下对象是什么?
对象是成员函数与成员变量组成的。
下面是代码:
#include <stdio.h>
class Test/类
{
int mi;
public:
int mj;//成员变量
Test(int i);//成员函数
Test(const Test& t);
int getMi();
void print();
};
Test::Test(int i)
{
mi = i;
}
Test::Test(const Test& t)
{
mi = t.mi; //mi 为private 类型,为何可以调用?
}
int Test::getMi()
{
return mi;
}
void Test::print()
{
printf("this = %p\n", this);
}
int main()
{
Test t1(1);//对象
Test t2(2);
Test t3(3);
printf("t1.getMi() = %d\n", t1.getMi());
printf("&t1 = %p\n", &t1);
t1.print();
printf("t2.getMi() = %d\n", t2.getMi());
printf("&t2 = %p\n", &t2);
t2.print();
printf("t3.getMi() = %d\n", t3.getMi());
printf("&t3 = %p\n", &t3);
t3.print();
return 0;
}
结果如下:
t1.getMi() = 1
&t1 = 0xbfcc3d68
this = 0xbfcc3d68
t2.getMi() = 2
&t2 = 0xbfcc3d60
this = 0xbfcc3d60
t3.getMi() = 3
&t3 = 0xbfcc3d58
this = 0xbfcc3d58
上面定义了3个对象,每一个对象都可以调用类的成员。在自己的类之下创造的对象是可以调用private类型的。
因此结论为:
每一个对象拥有自己独立的属性(成员变量)
所有的对象共享类的方法(成员函数)
能够直接访问对象的属性
隐藏参数 this 指针用于指代当前对象