[英]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.