在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)
{
}
}
答案 0 :(得分:1)
我不是C ++ / CX的专家,但AFAIK ref类只能实例化ref new
。隐式转换otoh只能通过创建(概念上)驻留在堆栈上的对象来实现。
因此,如果我对ref new
是正确的,ref class
对象不会发生隐式转换,而explicit
关键字在其构造函数(和C ++ 11转换运算符)中没有用处