函数名().anotherfunctionname()在C++中的含义是什么[重复]

fcy6dtqo  于 2023-01-22  发布在  其他
关注(0)|答案(3)|浏览(110)
    • 此问题在此处已有答案**:

Method chaining in C++?(2个答案)
17小时前关门了。
例如在C++中我们使用:

int a = 12;
typeid(a).name();

获取变量的类型
我的问题是typeid到底是什么(我几乎可以肯定它是一个函数,但Clion什么也没显示),如果它是一个函数,它是如何继承的,或者是name()函数
我试图获取type id是什么,但Clion什么也没显示(例如,当建议在Clion中弹出时,当u键入na时,它显示建议,并在name前面显示和f,因此我知道它是一个函数,但对于typeid,它为空)
编辑:有没有办法做类似的东西?几乎所有的3个答案都很好,我很感激所有的答案

mzillmmw

mzillmmw1#

根据cppreference,类型ID
引用代表类型type的std::type_info对象。如果type是引用类型,则结果引用代表被引用类型的cv非限定版本(C++11起)的std::type_info对象。
因此typeid(x)返回一个std::type_info对象,其中包含可以查询的方法:


https://en.cppreference.com/w/cpp/types/type_info

t40tm48m

t40tm48m2#

typeid有点特殊,因为它是keyword,这可能是为什么你无法在CLion上找到太多关于它的信息。同样,你也无法找到很多关于其他关键字的信息,如intif
尽管如此,使用typeid(some_variable)的结果将是std::type_info(一个非常好的类),它将允许您继续调用像.name()这样的成员函数。

zbsbpyhn

zbsbpyhn3#

该构造执行以下操作:第一函数调用具有对象的返回值,该对象具有作为成员函数的第二函数名。
例如,在更一般的上下文中:

#include <iostream>

struct AnObject {
  void anotherFunctionName() {
    std::cout << "anotherFunctionName() member of AnObject was called" << std::endl;
  }
};

AnObject aFunctionName() {
  std::cout << "aFunctionName() was called, returning AnObject" << std::endl;
  return AnObject();    
}

int main() {
  // Return an instance of AnObject, and call its member function:
  aFunctionName().anotherFunctionName();
}

这将输出:

aFunctionName() was called, returning AnObject 
anotherFunctionName() member of AnObject was called

相关问题