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

在.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,potentiallyheterogeneoustabulardata
structurewithlabeledaxes(rowsandcolumns).Arithmeticoperations
alignonbothrowandcolumnlabels.Canbethoughtofasadict-like
containerforSeriesobjects.Theprimarypandasdatastructure
Parameters
----------
data:numpyndarray(structuredorhomogeneous),dict,orDataFrame
DictcancontainSeries,arrays,constants,orlist-likeobjects
index:Indexorarray-like
Indextouseforresultingframe.Willdefaulttonp.arange(n)if
noindexinginformationpartofinputdataandnoindexprovided
columns:Indexorarray-like
Columnlabelstouseforresultingframe.Willdefaultto
np.arange(n)ifnocolumnlabelsareprovided
dtype:dtype,defaultNone
Datatypetoforce.Onlyasingledtypeisallowed.IfNone,infer
copy:boolean,defaultFalse
Copydatafrominputs.OnlyaffectsDataFrame/2dndarrayinput
Examples
--------
ConstructingDataFramefromadictionary.
>>>d={'col1':[1,2],'col2':[3,4]}
>>>df=pd.DataFrame(data=d)
>>>df
col1col2
013
124
Noticethattheinferreddtypeisint64.
>>>df.dtypes
col1int64
col2int64
dtype:object
Toenforceasingledtype:
>>>df=pd.DataFrame(data=d,dtype=np.int8)
>>>df.dtypes
col1int8
---Returntocontinue,qtoquit---
#使用type查看类型
In[5]:type(pd.DataFrame)
Out[5]:type
In[6]:type(pd)
Out[6]:module
那么c++中有没有类似的方法,或者说要是有这些需求要如何处理?
还是我理解错了,只要能用都有.h文件的?
谢谢
慕姐8265434
浏览 554回答 2
2回答

LEATH

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

相关分类

JavaScript