是明确的' WinRT课程必需和/或推荐的关键字?

时间:2014-07-01 07:22:47

标签: windows-runtime c++-cx

在WinRT中构造类型时,explicit关键字是否具有与标准C ++类型相同的功能和价值? IE浏览器。 WinRT ref类型是否支持与标准C ++类型隐式相同的转换?

#pragma once

#include <collection.h>
#include <ppltasks.h>

using namespace Platform;

namespace RuntimeComponent2
{
    public ref class Class1 sealed
    {
    public:
        explicit Class1(Platform::String^ foo); // does the 'explicit' keyword here have any value?
    private: 
         Platform::String^ m_foo;
    };

    Class1::Class1(Platform::String^ foo)
        : m_foo(foo)
    {
    }
}

1 个答案:

答案 0 :(得分:1)

我不是C ++ / CX的专家,但AFAIK ref类只能实例化ref new。隐式转换otoh只能通过创建(概念上)驻留在堆栈上的对象来实现。

因此,如果我对ref new是正确的,ref class对象不会发生隐式转换,而explicit关键字在其构造函数(和C ++ 11转换运算符)中没有用处