为了账号安全,请及时绑定邮箱和手机立即绑定

C++ 如何获取类的属性和方法?

C++ 如何获取类的属性和方法?

慕姐8265434 2019-05-22 23:17:23
在.h文件中一个类的定义,该类拥有多个方法和属性:classTest1{public:Test1(intn);voidset(int,int,int);intisLeapYear();voidprint();private:intnum;intmonth;intday;intyear;doublelength;};就是我在main函数中获取到了类Test1实例t1了,如何才能知道这个实例中有哪些方法和属性?这些方法和属性有doc吗?怎么查看?**是不是任何的c代码编译成lib和dll后都会有对应的.h头文件,这个头文件中就包含了类的方法和属性信息?会不会存在没有头文件,但是我们可以正常使用lib和dll所提供的类?对于这样的情况,那么如何知道该类要如何调用,并能否查看方法的doc?**因为是从Python过来学C++的,以前学过c,现在回来学发现C++相对python是有点不方便,或者说我不会用,因为在python中查看类的属性方法和doc非常方便,一个dir函数就出来了:#导入pandas这个包importpandasaspd#pd.DataFrame是一个类,使用dir查看这个类中有的方法和属性dir(pd.DataFrame)Out[3]:['T','_AXIS_ALIASES','_AXIS_IALIASES','_AXIS_LEN','_AXIS_NAMES','_AXIS_NUMBERS','_AXIS_ORDERS','_AXIS_REVERSED','_AXIS_SLICEMAP','__abs__','__add__','__and__','__array__','__array_wrap__','__bool__','__bytes__',...]#在ipython中查看doc,就是加个问号就知道怎么用了pd.DataFrame?Initsignature:pd.DataFrame(data=None,index=None,columns=None,dtype=None,copy=False)Docstring:Two-dimensionalsize-mutable,potentiallyheterogeneoustabulardatastructurewithlabeledaxes(rowsandcolumns).Arithmeticoperationsalignonbothrowandcolumnlabels.Canbethoughtofasadict-likecontainerforSeriesobjects.TheprimarypandasdatastructureParameters----------data:numpyndarray(structuredorhomogeneous),dict,orDataFrameDictcancontainSeries,arrays,constants,orlist-likeobjectsindex:Indexorarray-likeIndextouseforresultingframe.Willdefaulttonp.arange(n)ifnoindexinginformationpartofinputdataandnoindexprovidedcolumns:Indexorarray-likeColumnlabelstouseforresultingframe.Willdefaulttonp.arange(n)ifnocolumnlabelsareprovideddtype:dtype,defaultNoneDatatypetoforce.Onlyasingledtypeisallowed.IfNone,infercopy:boolean,defaultFalseCopydatafrominputs.OnlyaffectsDataFrame/2dndarrayinputExamples--------ConstructingDataFramefromadictionary.>>>d={'col1':[1,2],'col2':[3,4]}>>>df=pd.DataFrame(data=d)>>>dfcol1col2013124Noticethattheinferreddtypeisint64.>>>df.dtypescol1int64col2int64dtype:objectToenforceasingledtype:>>>df=pd.DataFrame(data=d,dtype=np.int8)>>>df.dtypescol1int8---Returntocontinue,qtoquit---#使用type查看类型In[5]:type(pd.DataFrame)Out[5]:typeIn[6]:type(pd)Out[6]:module那么c++中有没有类似的方法,或者说要是有这些需求要如何处理?还是我理解错了,只要能用都有.h文件的?谢谢
查看完整描述

2 回答

?
LEATH

TA贡献1936条经验 获得超6个赞

C或C++程序编译后就会失去程序中的很多信息,包括类名、方法名、字段名等,所以想在运行期间获得这些内容是很难的。这一点与Python等支持反射的语言有很大不同。
至于导出调试信息,只是说在可执行程序中加了一段数据,用来标识可执行文件与源代码的一些映射,从而让调试变得方便。但是调试信息是给调试器用的,程序自身并不能够直接获取这些信息,除非你自己解析二进制格式的可执行文件。
所以回到你的问题上来,虽然很多语言都提供了反射机制,但C/C++这种相对比较“底层”的语言并没有提供。
                            
查看完整回答
反对 回复 2019-05-22
  • 2 回答
  • 0 关注
  • 553 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信