zoukankan      html  css  js  c++  java
  • C++11 新特性之operator "" xxx

    从C++11开始,我们可以使用以下形式通过常量字符串构造自定义类型, 比如:

    class Person
    {
    public:
        Person(const std::string& name): _name(name){}
        std::string name() const {
            return _name;
        }
    private:
        std::string name;
    }
    
    inline Person operator "" _psn (const char *name, size_t n)
    {
        return Person(std::string(name, n));
    }
    
    int main()
    {
        auto person = "Xiao Ming"_psn;
        std::cout<< "The person' name is " << person.name() << std::endl;
        return 0;
    }

    Output:

    The person' name is Xiao Ming

    在std::literals::chrono_literals的实现用,也用了类似的手段:

    constexpr std::chrono::milliseconds operator "" ms(unsigned long long ms);

    实现如下:

    constexpr std::chrono::milliseconds operator ""ms(unsigned long long ms)
    {
        return chrono::milliseconds(ms);
    }

    例子:

    #include <iostream>
    #include <chrono>
     
    int main()
    {
        using namespace std::chrono_literals;
        auto d1 = 250ms;
        std::chrono::milliseconds d2 = 1s;
        std::cout << "250ms = " << d1.count() << " milliseconds
    "
                  << "1s = " << d2.count() << " milliseconds
    ";
    }

    Output:

    250ms = 250 milliseconds
    1s = 1000 milliseconds
  • 相关阅读:
    第八周作业。
    作业。
    第七周作业。
    作业。
    Android简易计算器
    Android第四周
    java6.12
    java5.29
    java5.28
    java5.22
  • 原文地址:https://www.cnblogs.com/moodlxs/p/10148026.html
Copyright © 2011-2022 走看看