21xrx.com
2024-09-19 10:04:12 Thursday
登录
文章检索 我的文章 写文章
C++如何获取类名?
2023-07-01 05:24:58 深夜i     --     --
C++ 获取 类名

在C++中,类是一种自定义的数据类型,可以用来描述一类对象的属性和行为。对于使用类的程序员来说,有时需要获取该类的名称,以便进行一些操作,例如记录日志、打印调试信息等。那么,C++如何获取类名呢?

在C++中,获取类名的方法有很多种,下面介绍两种比较常用的方法:

方法一:使用typeid运算符

C++提供了一个名为typeid的运算符,可以用来获取一个对象的类型信息或类名。其语法如下所示:


typeid(object).name()

其中,object是一个对象或表达式,name()是一个成员函数,用来获取对象的类型名称,返回一个const char*类型的字符串。

使用这种方法获取类名的代码如下所示:


#include <iostream>

#include <typeinfo>

class MyClass {

public:

  void foo() {}

};

int main() {

  MyClass obj;

  std::cout << typeid(obj).name() << std::endl;

  return 0;

}

运行这段代码,输出结果为:


7MyClass

可以看到,typeid().name()返回的类名前面有一个数字,该数字为编译器自动生成的标识符,表示该类型在编译器内部所占的位置。因此,有些编译器可能会生成不同的标识符,导致获取的类名不同,这需要注意。

方法二:使用__PRETTY_FUNCTION__宏

C++还提供了一个名为__PRETTY_FUNCTION__的预定义宏,可以用来获取当前函数或方法的名称和参数列表,其中包括类名。其语法如下所示:


__PRETTY_FUNCTION__

使用这种方法获取类名的代码如下所示:


#include <iostream>

class MyClass {

public:

  void foo()

    std::cout << __PRETTY_FUNCTION__ << std::endl;

  

};

int main() {

  MyClass obj;

  obj.foo();

  return 0;

}

运行这段代码,输出结果为:


void MyClass::foo()

可以看到,__PRETTY_FUNCTION__返回的字符串中包含了函数或方法所属的类名,这样就可以方便地获取类名了。

综上所述,C++中获取类名的方法有很多种,使用typeid运算符或__PRETTY_FUNCTION__宏都可以达到目的。需要注意的是,这些方法获取的类名可能会带有编译器生成的标识符,需要根据实际情况进行处理。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复