hi,在c++ 中,如何定义个指针,使之指向类中对象的成员函数,如下程序
#include<iostream>usingnamespacestd;classTime{public:voidget_time(){cout<<"hello";}};...
#include<iostream>
using namespace std;
class Time
{
public:
void get_time()
{ cout<<"hello"; }
};
int main()
{
Time t1;
如何定义指向t1.get_time()的指针;
注意不是指向类公共成员函数的指针void (Time::*p)() =&Time::get_time;
return 0;
} 展开
using namespace std;
class Time
{
public:
void get_time()
{ cout<<"hello"; }
};
int main()
{
Time t1;
如何定义指向t1.get_time()的指针;
注意不是指向类公共成员函数的指针void (Time::*p)() =&Time::get_time;
return 0;
} 展开
4个回答
展开全部
函数是 属于代码段,所有对象在内存里面共享一份代码的。
在内存里面的地址就是 你说的&Time::get_time;。 不过你拿到这个东西毫无意义。通常来说,代码的位置都是只读的内存,保存的是汇编的机器码,你说你要这个东西有啥用呢,只是给cpu执行的指令。
数据则不一样,每个对象在内存里面都有自己的一份数据。数据是放到数据段的。
咩个程序加载后,内存会分为数据块和 代码块等多个 内存区域。不同的内容存放于不同的区域里面。
---------------------------------------------------
(1)可以定义指向类数据成员的指针吗?
(2)为什么可以定义指针指向实例化后 类对象的数据成员;
这个是数据,是可以的。不过对于复杂对象来说一般也不推荐这么做。一般用于简单struct的,没有继承的时候通过直接操纵指针有时候会方便一些。
在内存里面的地址就是 你说的&Time::get_time;。 不过你拿到这个东西毫无意义。通常来说,代码的位置都是只读的内存,保存的是汇编的机器码,你说你要这个东西有啥用呢,只是给cpu执行的指令。
数据则不一样,每个对象在内存里面都有自己的一份数据。数据是放到数据段的。
咩个程序加载后,内存会分为数据块和 代码块等多个 内存区域。不同的内容存放于不同的区域里面。
---------------------------------------------------
(1)可以定义指向类数据成员的指针吗?
(2)为什么可以定义指针指向实例化后 类对象的数据成员;
这个是数据,是可以的。不过对于复杂对象来说一般也不推荐这么做。一般用于简单struct的,没有继承的时候通过直接操纵指针有时候会方便一些。
展开全部
你认为类实例化之后也具有自己的函数,而且每个实例的不同?
追问
你好,初学c++,只是看到书上没有介绍这个指针;
还有个问题:(1)可以定义指向类数据成员的指针吗?(2)为什么可以定义指针指向实例化后 类对象的数据成员;
追答
查询看看C++中的class的存储模型吧,各种成员类型都分析一下估计就好多了,有些问题可能就不再是问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-03-13
展开全部
"指向类公共成员函数的指针void (Time::*p)() =&Time::get_time;"
这个类型的指针可以指向t1.get_time()的,因为它们类型相同,作用域相同。
这个类型的指针可以指向t1.get_time()的,因为它们类型相同,作用域相同。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-03-13
展开全部
void (*p)();
p=t1.get_time();
不行么
p=t1.get_time();
不行么
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询