【第一章】
【1.4.1】
到现在为止,读者可能从笔者的叙述中得出这样一个实例:ISO/ANSI C++提供的动态内存分配和释放功能与CLR不兼容,我们必须使用CLR的内容管理机制,这意味着必须使用C++/CLI类,而不是本地C++类。
CLI:通用语言基础结构,Common Language Infrastructure;
MFC:微软基类,Microsoft Foundation classes;
【1.6.4】
扩展名为.sln的文件,记录着关于解决方案中项目的信息。
扩展名为.suo的文件,其中记录着应用于该解决方案的用户选项。
扩展名为.ncb的文件,记录着与解决方案的Intellisense有关的数据。Intellisense是我们在Editor窗口中输入代码时提供自动完成和提示功能的工具。
【总结】
- CLR是微软公司实现的CLI标准
- .NET Framework由CLR与.NET库(为针对CLR的应用程序提供支持)组成
- 属性能向编译器提供附加信息,指示它修改或扩充程序中的特定程序要素
=======================================================================================
【第二章】
【2.1.5】
良好的编程习惯是采用使代码易于理解并且使错误发生的可能性降至最低的编码方法。
在C++中,输入的来源或输出的目的地称为流。
【2.2.1】
在C++中经常采用这样一个约定,就是把以大写字母开头的名称用于类的命名,而把以小写字母开头的名称用于变量。
【2.3.2】
wchar_t letter = L'Z';
字符常量'Z'前面的字母L告诉编译器这是一个16位字符代码值。
=======================================================================================
【第四章】
【4.2.4】
使用未初始化的指针是相当危险的。我们很容易通过未初始化的指针改写随机的存储区域,由此产生的后果完全取决于我们的运气。
当然,我们也可以用0显式初始化指针,这同样能够确保赋给指针一个不指向任何对象的值。系统不可能给任何对象分配地址0,因此将0用作地址实际上表明该指针没有任何目标。尽管这样做确实有点儿不太清晰,但如果我们希望用其他编译器来编译自己的代码,那么使用0来初始化那些应该为空值的指针跟可取。
【4.2.6】
我们应该区分下面这三种与const、指针及指针指向的对象有关的情形:
- 指向常量对象的指针
- 指向某个对象的常量指针
- 指向常量对象的常量指针
第一种情况,我们不能修改被指向的对象,但可以使指针指向其他对象:
const char* pstring = "Some test";
第二种情况,我们不能修改指针中存储的地址,但可以修改指针指向的对象:
char* const pstring = "Some test";
在最后一种情况中,指针和被指向的对象都被定义成常量,因此都不能被修改:
const char* const pstring = "Some test";
【4.6.1】
在CLR堆中创建的所有对象都必须被跟踪句柄应用。所有属于引用类类型的对象都存储在堆中,因此为引用这些对象而创建的变量都必须是跟踪句柄。