C++/CLI复习总结(1):语言

只说重点难点,以及在ISO-C++上的变化

 

1. 运算符重载:要加static了

 

2. 构造函数间的调用:

调用同class 中的其他构造函数,用代码gcnew (this) C()的形式

调用父类的构造函数,如C2(): C1(1)调用了C1(int a)这个构造函数

 

3. %取代&作为取引用,当然还有^取句柄

 

4. 覆写

virtual void Speak() override new = Dog :: Speak 

 

5. 类型转换

static_cast<int>(var) 不安全,很快,不检查是否符合转换条件

dynamic_cast<int>(var) 安全些,不快,检查是否符合条件,不符合条件时返回nullptr

safe_cast<int>(var) 安全,慢,不符合条件抛出exception

 

6. 模板和泛型

http://msdn.microsoft.com/zh-cn/partners/c6cyy67b.aspx

http://school.cnd8.com/c/jiaocheng/8613.htm

 

7. 串行化

可串行化的class前加[Serielizable]

串行化的方法有两种,Binary或者XML(即SOAP, simple object access protocol)

System::Runtime::Serialization::Formatters::Binary中,有binaryFormatter

 

BinaryFormmater ^bf=gcnew BinaryFormatter(); FileStream ^pl=File::Create("Player.dat"); bf->Serialize(pl, Joe); pl.close(); pl=File::OpenRead("Player.dat"); Player Joe=(Player^)bf->Deserialize(pl); pl->Close(); 

 

使用SoapFormatter,System::Runtime::Serialization::Formatters::Soap

FileStream pl= File::Create("Player.xml"); SoapFormatter ^sf=gcnew SoapFormatter(); sf->Serialize(pl, Joe); pl->Close(); pl=File::OpenRead("Player.xml"); Player Joe=(Player^)sf->Deserialize(pl); pl->Close();  


你可能感兴趣的:(C++,exception,serialization,File,System,语言)