函数调用前的类型声明是什么意思?
What does a type declaration in front of a function call mean
我正在处理一个相当大的项目,我提出了一个声明,我不明白。它看起来像这样:
visitor::DFV< Outer > visitor( *this, this->graph(), this->store() );
我会给你更多的代码,但它真的很大,我真的不能告诉哪些部分是相关的。有趣的是,我甚至在DFV结构或它的前身中找不到任何称为visitor
的函数,Eclipse也找不到。我很确定我没有得到这个正确的含义,我找不到任何参考这个c++语法。谁能给我解释一下这种说法的大致意思?
Type<SomeClass> foo(x, y);
这不是一个函数调用,而是一个变量定义,(...)
是构造函数参数列表。
typedef visitor::DFV< Outer > Type;
//...
Type visitor(*this, this->graph(), this->store());
或
Type visitor(x, y, z);
对于您的通用示例:
Type<SomeClass> foo(x, y);
这是一个变量定义,其中Type<SomeClass>
是变量的类型,foo
是它的名称,其余是传递给类构造函数的参数。
类模板Type
将有一些构造函数,在其定义中(通常在其头文件中),如下所示:
template< typename T >
class Type
{
public:
Type( int x, int y );
};
如果你不了解这种语法,我认为你并没有真正很好地理解c++。
visitor::DFV< Outer > visitor( *this, this->graph(), this->store() );
我会将其解释为一个函数,或者是类访问器中的静态函数,或者是命名空间访问器中的全局函数,这就是我能用代码说的所有内容。<Outer>
部分是函数的模板参数例如,如果我做了一个这样的模板
template<class T>
int someFunc<T>(T i, Tx)
{
//whatever operations in the function
}
当我想要调用那个函数时,我就这样做
int i = someFunc<int>(2, 3);
//alternatively
int x = someFunc<std::string>("Hello", "World");
*this
是指向调用该函数的类的非保护指针,this->graph()
是调用该函数的类中方法graph()
的返回值,this->store()
与graph相同,但返回值为store()
。
第二个位是像这样实例化一个模板类
template<class T>
class Type
{
public:
Type(T x, T y);
};
相关文章:
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 标准 N3337 5.2.10 第 7 条中的C++"类型"是什么意思?
- "类模板示例<int>;"语句对 C++11 是什么意思?
- 线应该是什么意思
- "CID"在AT+HTTPPARA= "CID" ,1中是什么意思
- 表达式"b=(b-x)&x"是什么意思?
- 这个表达是什么意思?
- 此代码验证公式是什么意思?
- 跟踪日志中的T.11803()是什么意思?
- 这个额外的关键字在这个 c++ 类声明中是什么意思?
- * 和 ** 在 C++ 函数声明中是什么意思?
- _T("xyz")是什么意思?
- #define Dbg(fmt,..) (0) 是什么意思? 警告:表达式无效
- 这行代码到底是什么意思?
- 在命名空间名称之前加上 :: 是什么意思?
- 从字符数组的元素中减去'a'是什么意思
- "friend"关键字在C++中是什么意思?
- 减法中的"0"是什么意思?
- 字符数组前面的加号是什么意思?
- 这里的字符串函数是什么意思