Windows runtime 是';显式';WinRT类是否需要和/或建议使用关键字? 在WinRT中构造一个类型时,显式< /Cord>关键字是否具有与标准C++类型相同的功能和值?WiRT 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) { } } #pragma一次 #包括 #包括 使用命名空间平台; 命名空间运行时组件2 { 公共参考类别1密封 { 公众: explicit Class1(Platform::String^foo);//这里的'explicit'关键字有值吗? 私人: 平台::字符串^m_foo; }; Class1::Class1(平台::字符串^foo) :m_foo(foo) { } }

Windows runtime 是';显式';WinRT类是否需要和/或建议使用关键字? 在WinRT中构造一个类型时,显式< /Cord>关键字是否具有与标准C++类型相同的功能和值?WiRT 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) { } } #pragma一次 #包括 #包括 使用命名空间平台; 命名空间运行时组件2 { 公共参考类别1密封 { 公众: explicit Class1(Platform::String^foo);//这里的'explicit'关键字有值吗? 私人: 平台::字符串^m_foo; }; Class1::Class1(平台::字符串^foo) :m_foo(foo) { } },windows-runtime,c++-cx,Windows Runtime,C++ Cx,我不是C++/CX方面的专家,但AFAIK ref类只能实例化为víaref new。隐式转换otoh只能通过创建(概念上)驻留在堆栈上的对象来实现 因此,如果我对ref new的理解是正确的,那么ref class对象就不能进行隐式转换,explicit关键字在它们的构造函数(和C++11转换运算符)中没有用处。具体地说,C++/CX中的构造函数(非默认)被转换为类工厂方法,因此语法存在相当多的漏洞。他们不是真正的演员。

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

因此,如果我对
ref new
的理解是正确的,那么
ref class
对象就不能进行隐式转换,
explicit
关键字在它们的构造函数(和C++11转换运算符)中没有用处。

具体地说,C++/CX中的构造函数(非默认)被转换为类工厂方法,因此语法存在相当多的漏洞。他们不是真正的演员。