簡體   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