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