C ++カスタム型リテラル定数

int i = 888;

コンパイラは、数値888をintオブジェクトに変換します。これは、カスタムタイプに対しても実行できます。

#define debug qDebug()<<
struct ceshi
{
    int frist;
    int second;
    ceshi(int one = 0,int two = 0):frist{one},second{two}
    {
    }
};
ceshi operator"" _xxx(long double f)
{
    return ceshi(f,88);
}

int main(int argc, char *argv[])
{
    ceshi f = 44.4_xxx;
    debug f.frist << f.second;
}

演算子 ""の後にアンダースコアで始まる記号は、カスタム型リテラル定数演算子として使用されます。アンダースコアで始まる必要があります。アンダースコアで始まらないものは、標準ライブラリで使用するために予約されており、次のタイプのパラメータをサポートしています。

operator "" identifier (const char *);
operator "" identifier (unsigned long long int);
operator "" identifier (long double);
operator "" identifier (char);
operator "" identifier (const char*, std::size_t);

おすすめ

転載: blog.csdn.net/kenfan1647/article/details/114443456