网站建设和管理是教什么科目,服装鞋帽商城网站建设,珠海网站制作网络推广,手机网站建设要素隐藏的this指针#xff0c;所有对象共享类的成员函数
写一篇博客花费时间虽然长#xff0c;但是却让你对内容的记忆尤为深刻#xff0c;尤其是你对它的态度。记录菜鸟的成长日记#xff0c;也希望同为菜鸟的你们与我一起共同进步#xff01;#xff01;现在分享的是C的学…隐藏的this指针所有对象共享类的成员函数
写一篇博客花费时间虽然长但是却让你对内容的记忆尤为深刻尤其是你对它的态度。记录菜鸟的成长日记也希望同为菜鸟的你们与我一起共同进步现在分享的是C的学习笔记后面会同时分享数据结构学习笔记以及我目前手中项目的制作流程忘记说了目前手中正在做的是 基于Imx6的一个linux操作系统的移植主要做驱动的移植与系统的移植后期可能会移植QT这些我都希望记录在我的博客中相信几年后我也有可能会成为了博客专家了呢哈哈哈
好今天的主题依然接着上一篇博客的线路来探讨一下目前我所学到的C中的一些经典问题的 探讨 1.成员函数和成员变量都是隶属于具体的对象么 从面相对象的角度
对象由属性成员变量和方法成员函数构成
从程序运行角度
对象由数据和函数构成 *数据可以位于栈堆和全局数据区 *函数只能位于代码段
直接上代码吧文字的描述总是很枯燥
#include stdio.hclass 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;
}
先运行一下我还是将它放到linux中运行输出结果为
t1.getMi() 1
t1 0xbfcc3d68
this 0xbfcc3d68
t2.getMi() 2
t2 0xbfcc3d60
this 0xbfcc3d60
t3.getMi() 3
t3 0xbfcc3d58
this 0xbfcc3d58以上输出可以看出每一个对象以及this所指的地址都是一样的这说明了一些问题 可以得出一下四条结论 -每一个对象拥有自己独立的属性成员变量学了虚拟内存部分不之后这些概念变的很清晰 -所有的对象共享类的方法成员函数 -方法能够直接访问对象的属性 -方法中的隐藏参数 this 指针用于指代当前对象
程序中的问题mi t.mi; //mi 为private 类型为何可以调用因为拷贝构造函数Test::Test(const Test t)本身也属于一种成员函数能够直接访问对象的属性。