1 C++中成员函数和成员变量的隶属问题
1.1 成员函数和成员变量的隶属问题
成员函数和成员变量都是隶属于具体对象的吗?
从面向对象的角度:
- 对象由属性(成员变量)和方法(成员函数)构成。
从程序运行的角度:
- 对象由数据和函数构成
- 数据可以位于栈、堆和全局数据区
- 函数只能位于代码段
结论:
- 每一个对象拥有自己独立的属性(成员变量)。
- 所有的对象共享类的方法(成员函数)。
- 方法能够直接访问对象的属性。
- 方法中的隐藏参数this用于指代当前对象。
#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;
}
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;
}
参考资料: