对于字符连同字符串这样的字面常量,我们也能够像上面的整数相同调用他们的成员函数,但是他们的行为有一点点晦涩。例如,下面的代码:
| Console::WriteLine(( 'a' ).ToString() ); |
将在控制台上打印出97,而非'a'这个字符。要将字符'a'打印出来,我们需要将其首先转型为System::Char:
| Console::WriteLine(((wchar_t)'a').ToString() ); |
C /CLI对字符串字面常量采取了特别的处理策略。从某种程度上来讲,字符串字面常量在C /CLI中的类型更接近System::String,而非C风格的字符串指针。显然,这将对重载函数的辨析产生影响。例如:
| public ref class R { public: void foo( System::String^ ); // (1) void foo( std::string ); // (2) void foo( const char* ); // (3) }; void bar( R^ r ) { // 调用哪一个foo呢? r->foo( "Pooh" ); } |
[1] [2] 下一页




