C++/CLI——读书笔记《Visual C++/CLI从入门到精通》 第Ⅰ部分
=================================版权声明=================================
版权声明:本文为博主原创文章 未经许可不得转载
请通过右侧公告中的“联系邮箱(wlsandwho@foxmail.com)”联系我
未经作者授权勿用于学术性引用。
未经作者授权勿用于商业出版、商业印刷、商业引用以及其他商业用途。
本文不定期修正完善,为保证内容正确,建议移步原文处阅读。 <--------总有一天我要自己做一个模板干掉这只土豆
本文链接:http://www.cnblogs.com/wlsandwho/p/4700397.html
耻辱墙:http://www.cnblogs.com/wlsandwho/p/4206472.html
=======================================================================
其实之前并没有学习C++/CLI的想法,但是最近用SQL Server的时候,感收到了来自大宇宙的深深恶意,哦不,是MS的。
CLI集成功能,对于某些情况下还是有用的,然而VC++并不太受待见。(SQL Server已不赞成使用扩展程序集。Dog my cats.)
这样一来,由于崇高的C++信仰,我只能折中的选用C++/CLI并在其中调用标准C++的DLL——如此一来只要学一部分就行了,
看起来进可攻退可守的样子。
从“MASM/内联汇编”到“C/C++”再到“C++/CLI”,基本上没什么大问题。
=======================================================================
一边看一遍写 看不完就不写了。
=======================================================================
这本书开篇很有意思,“现在没有‘Hello World’应用程序”都不好意说这是一本讲编程的书。”
=======================================================================
第一章 Hello C++
与 Hello World 的差别:
使用的是using namespace System;没加添加 iostream和using namespace std;
输出用的是Console::WriteLine()不是cout<<。
=======================================================================
第二章 面向对象编程基础
与C++类的差别:
class之前多了个修饰词
ref 引用类型 指向对象内存位置的指针/句柄 CLR堆 慢
value 值类型 就是对象本身 栈 快
(第二章没有解释 ^ 符号,可能是个包袱。)
=======================================================================
第三章 变量和操作符
与C++的差别
基本数据类型
C++ 类型字节数大小平台相关
C++/cLI 由.net平台决定
类型转换
C++ (double)600/3
C++/CLI double(600)/3//这个不算吧
支持C风格、C++风格和自己的safe_cast<>
有“句柄”//也能用指针
C++ int* pN=new int[2]; 指针 内存地址 不变
C++/CLI int^ nN=gcnew int[2]; 句柄 变量地址 更新//我怀疑这个实际上是在.net环境中虚拟的地址
字符串类
C++ string C++类库 #include <string>
C++/CLI String .net类 using namespace System; 初始化后不可变,修改操作实际上返回的是新的字符串。
StringBuilder .net类 using namespace System::Text; 对于要经常修改的应该用这个
=======================================================================
第四章 使用函数
Math::Round() 小数按位数四舍五入
Console::ReadLine() 从键盘读取输入
Convert::ToDouble() 字符串转double
Random 随机数?
=======================================================================
第五章 判断和循环语句
没有提到goto,看起来是作者在C++/CLI中不提倡用的样子,不过我很好奇有什么方法能优雅的跳出多层循环内部?
=======================================================================
第六章 类和对象进阶
创建对象提倡使用^//声明句柄
C++ 构造函数
C++/CLI 构造器
#using <mscorlib.dll> 导入Microsoft intermediate language(MSIL)文件mscorlib.dll 使用文件定义的托管数据和构造
推荐使用成员初始化列表
静态构造器 对类进行一次性初始化 在使用这个类的任何东西之前会调用
使用Static修饰 无参数
声明 static MyClass1();
实现 static MyClass1(){...}
类级常量//在类的所有实例中都不变的值
C++ static const
C++/CLI literal 要有初值
实例常量//创建实例后不能修改
C++/CLI initonly 由构造器设置
nullptr 表示空句柄
=======================================================================
第七章 控制对象生存期
垃圾回收器 gc//怪不得有gcnew
托管堆
代//无视吧
强制垃圾回收 System::GC::Collect()
析构器//析构
delete对象时发生//gcnew和delete
终结器
前缀 !
垃圾回收器在回收对象的内存之前发生
使用了非托管资源就需要终结器//非托管代码中的 非托管类的指针 文件句柄 窗口句柄 图形设备上下文等
不要定义空白内容的终结器
终结器的执行顺序不能保证
程序终止期间仍旧存活的对象不会调用终结器 可能不会正确清理自己
后台线程使用的对象
终结器内创建的对象
可在析构器中调用终结器
清理对象、回收内存 独立发生
字符串和数组只能用gcnew,不能用栈语义创建
拷贝构造函数
C++ 要么自己创建要么编译器提供 虽然编译器提供的默认拷贝构造函数是浅拷贝
C++/CLI 只能自己创建
% 跟踪引用 C++中用拷贝构造函数和&
* 解引用 C++中用途差不多
=======================================================================
第八章 继承
System::Decimal
精确表示浮点值,不会发生舍入情况。
效率不如float和double
基类只能用成员初始化列表进行初始化
只支持公共继承,可以不加public关键字
构造函数照常声明,实现时函数头要有成员初始化列表(来初始化基类)。
抽象类
类名后加abstract修饰
重写成员函数
不需要重写的 不处理
重写基类函数
virtual int GetNum() override 重写覆盖基类函数
virtual int GetNum() new 重写隐藏添加
抽象(纯虚函数)
virtual int GetNum()=0;
virtual int GetNum() abstract;
一定是我的C++理论版本太古老了,重写还能改变返回类型?VC6不能,现在2015不习惯,2010没尝试过。但这肯定不是个好的设计习惯。
protected:
只应创建受保护的成员函数,数据成员应该是私有的。
密封类
不可作为基类使用——它没有派生类
ref class MyClass1 sealed{};
既抽象又密封
如,只包含静态成员
ref class MyClass1 abstract sealed{};
抽象 阻止实例化
密封 阻止添加功能
接口
interface class IXxx
{
void Func();
}
ref class CMyClass1:IXxx
{
virtual void Func1();
}
类:
C++ 多继承
C++/CLI 单继承 可实现多个接口
=======================================================================
第Ⅰ部分完结
感觉没啥
=======================================================================
C++/CLI——读书笔记《Visual C++/CLI从入门到精通》 第Ⅰ部分的更多相关文章
- C++/CLI——读书笔记《Visual C++/CLI从入门到精通》 第Ⅳ部分
=================================版权声明================================= 版权声明:本文为博主原创文章 未经许可不得转载 请通过右 ...
- C++/CLI——读书笔记《Visual C++/CLI从入门到精通》 第Ⅱ部分
=================================版权声明================================= 版权声明:本文为博主原创文章 未经许可不得转载 请通过右 ...
- 《利用python进行数据分析》读书笔记--第五章 pandas入门
http://www.cnblogs.com/batteryhp/p/5006274.html pandas是本书后续内容的首选库.pandas可以满足以下需求: 具备按轴自动或显式数据对齐功能的数据 ...
- <<Java RESTful Web Service实战>> 读书笔记
<<Java RESTful Web Service实战>> 读书笔记 第一章 JAX-RS2.0入门 REST (Representational State ransf ...
- 4 Visual Effects 视觉效果 读书笔记 第四章
4 Visual Effects 视觉效果 读书笔记 第四章 Well, circles and ovals are good, but how about drawing r ...
- 《Visual C# 从入门到精通》第一章使用变量、操作符和表达式——读书笔记
前言: 这个笔记是我个人总结,主要是熟练自己查看<Visual C# 从入门到精通>(第8版)这本书时,懵然起总结的想法,只是总结一些知识点,在工作项目会用得上,但是对毫无C#语言基础的, ...
- Angular学习笔记:Angular CLI
定义 Angular CLI:The Angular CLI is a command line interface tool that can create a project, add files ...
- 认识CLR [《CLR via C#》读书笔记]
认识CLR [<CLR via C#>读书笔记] <CLR via C#>读书笔记 什么是CLR CLR的基本概念 通用语言运行平台(Common Language Runti ...
- CLR基础之一---认识CLR [《CLR via C#》读书笔记]
<CLR via C#>读书笔记 什么是CLR CLR的基本概念 通用语言运行平台(Common Language Runtime,简称CLR)是微软为他们的.Net虚拟机所选用的名称.这 ...
随机推荐
- SDL教程第一和第二个视频的笔记
观看正月点灯笼的SDL教程,地址http://www.tudou.com/listplay/9eG9tkk91oQ.html #include <stdio.h> #include < ...
- ReportingServies——SQLServer报表开发综合实例
如果我们安装了sqlserver2008 R2,将会自动安装一个报表开发工具 不要以为此报表开发工具只适合于sqlserver2008,其实在sqlserver2012中也是支持的,事实上我现在项目中 ...
- java中set接口的用法
java中的set接口有如下的特点: 不允许出现重复元素: 集合中的元素位置无顺序: 有且只有一个值为null的元素. 因为java中的set接口模仿了数学上的set抽象,所以,对应的数学上set的特 ...
- (转载)Windows常见性能计数器(较好的说明)
转载地址:http://blog.csdn.net/dfbrt56/article/details/3341591 Windows常见性能计数器 性能计数器(counter)是描述服务器或操作系统性能 ...
- React Native – 使用 JavaScript 开发原生应用
前不久,Facebook 在F8开发者大会上正式开源了 React Native 项目.不过目前只有 iOS 版,Android 版还需要再等一段时间,这是最新的用 JavaScript 语言开发原生 ...
- 推荐10个适合初学者的 HTML5 入门教程
HTML5 作为下一代网站开发技术,无论你是一个 Web 开发人员或者想探索新的平台的游戏开发者,都值得去研究.借助尖端功能,技术和 API,HTML5 允许你创建响应性.创新性.互动性以及令人惊叹的 ...
- CSS3背景温故
1.背景的五种基本属性background-color(背景颜色)background-image(背景图片)background-repeat(背景图片展示方式)background-attachm ...
- “破解大牛是怎么炼成的”之壳与ESP定律
文章难易度:★★★ 文章阅读点/知识点:逆向破解 文章作者:Sp4ce 文章来源:i春秋 关键字:网络 信息安全技术 本文参与i春秋社区原创文章奖励计划,未经许可禁止转载! 一.前言 通过前面几篇 ...
- C/C++ 一些常用的运算符
算数运算符 语法 解释说明举例 a + b 加法(求和)1+1..2+2.. 2.5+2.5..等等 a - b 减法(求差)5 - 2.. a * b 乘法(求积)2 * 5 a / b 除法( ...
- 怎么让一个项目里swift与OC可以兼容混合开发?
在苹果推出了swift语言之后,很多人担心OC很快会被取代,但是苹果方面表示2年内不会摒弃OC.但现在也快了啊.有的开发团队已经开始基于swift开发,但是有很多旧的框架还没来得及用swift写出来, ...