Как называется это обращение? - PullRequest
2 голосов
/ 02 июня 2010

Существует ли название или термин для этого типа преобразования в сообществе c ++? Кто-нибудь видел, чтобы это преобразование упоминалось как «неявное преобразование»?

class ALPHA{};

class BETA{
    public:
        operator ALPHA(){return alpha;}
    private:
        ALPHA alpha;
};

void func(ALPHA alpha){}

int main(){
    BETA beta;
    func(beta);
    return 0;
}

Ответы [ 4 ]

6 голосов
/ 02 июня 2010

Обычно это называется функцией преобразования. Это не неявное преобразование как таковое, но оно допускает неявное преобразование в целевой тип.

Редактировать: только что проверил, чтобы убедиться - §12.3.2 стандарта использует фразу «функция преобразования».

Edit2: я зарегистрировался в официальном стандарте, который (по крайней мере, предполагается) не является свободно доступным (хотя вы можете купить его у ISO или большинства организаций-членов стандартов, таких как ANSI , BSI и т. Д.) Многие люди предпочитают экономить деньги и использовать проект окончательного комитета , который является бесплатным.

1 голос
/ 02 июня 2010

Неявное преобразование часто называют принуждением .

1 голос
/ 02 июня 2010

Это обычно называют оператором преобразования .

0 голосов
/ 02 июня 2010

При вызове func(beta) объект beta неявно преобразуется в тип ALPHA. Это возможно только потому, что вы реализовали operator ALPHA().

...