繁体   English   中英

在C ++中具有类类型的函数是什么?

[英]What is a function with a class type called in C++?

我一直在网上搜索,但是找不到关键字。 假设我要使用类类型来创建方法/函数。 这是一个简单的例子:

struct action{
//constructor
action(int n){
}
};
action move(){
}

在这里,我将action类用作函数的类型。 这是我的问题:这叫什么? 如何使用该类的构造函数? 我应该在函数移动中返回什么? (它不允许我返回this 。错误: [invalid use of 'this' outside of a non-static member function] ))

这种情况没有特殊的名称。 这是很普遍的。

您可以通过所有常用方法调用构造函数,例如

action move() {
    return action(42);
}

要么

action move() {
    action a(42);
    return a;
}

在您的代码(和我的答案)中, move是正常功能。 也许您是说它要成为成员函数,在这种情况下,您还可以return *this; 返回当前对象。

这个叫什么?

move是自由函数的名称。 完整的签名action move()告诉您,它的返回值是类型action一个实例,并且函数不需要任何参数。 请注意,自由函数与成员函数的不同之处在于,它们与任何类没有特殊关系。

如何使用该类的构造函数?

创建该类的实例时,将调用构造函数。 例:

action instance; // calls default constructor

请注意,您并不是真正地直接调用构造函数。 在上述情况下,它是一个导致对action::action()的调用的声明。

我应该在函数移动中返回什么?

action的实例,因为函数签名是这样的:

action move() { return action{}; }

如果您的构造函数采用参数,则这里是一个调整后的示例:

struct action {
    action(int n) { /* do stuff with the argument... */ }
};

action move() { return action{42}; }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM