📄 class3.jc
字号:
/*
* class3.jc
*
* In this file, we're going to test auto conversion between types.
* Auto-conversion is performed, if the source class has a suitable
* convertor method for the destination type, or the destination type
* has a suitable constructor for the source type.
*/
import stdlib;
/*
* Just to come up with an example, a self-written string class.
* Of course it would be inefficient to use something like this
* instead of a native typelib string class.
*/
class CString
{
method CString() { m_String = ""; } // construct an empty CString
method CString( const string& s ) { m_String = s; } // construct CString from string
method const string& convertor() { return m_String; } // convert a CString to string
// our data member is a built-in string
string m_String;
}
/*
* function main
*/
function string main()
{
stdlib::Print("* Allocating a built-in string...\n");
string builtin = "Hello world!"; // a built-in string
stdlib::Print("Built-in string is: " + builtin + "\n");
stdlib::Print("* Allocating an empty CString...\n");
CString cstring = new CString(); // a self-written string class
stdlib::Print("* Assigning built-in string to CString...\n");
cstring = builtin; // implicitly calls CString constructor to create CString from built-in
stdlib::Print("CString is: " + cstring + "\n"); // implicitly converts CString into built-in string
stdlib::Print("* Assigning a string literal to CString...\n");
cstring = "Auto convert!"; // implicitly calls CString constructor to convert string literal into CString
stdlib::Print("CString is: " + cstring + "\n");
stdlib::Print("* Assigning CString to built-in string...\n");
builtin = cstring; // implicitly calls CString convertor to return a built-in string
stdlib::Print("Built-in string is: " + builtin + "\n");
return "";
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -