摘要: 一、隐式转换规则:a.混合类型的表达式中,其操作数被转为相同的类型b.用作条件的表达式被转为bool类型c.用一表达式初始化某个变量,或将一表达式赋值给某个变量,则该表达式被转换为该变量的类型二、显示转换(强制类型转换)1.为什么要进行强制类型转换? a.需要覆盖通常的标准转换 b.可能存在多种转换,需要选择一种特定的转换方式2.转换形式: cast-name(expression); cast-name根据情况的不同,又分为static_cast、dynamic_cast、const_cast 和 reinterpret_cast。 ◆static_cast ・编译器隐式执行的任何类型... 阅读全文
posted @ 2014-04-01 15:00 依然冷月 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 1、new和delete都会用,这里只声明一点:C++ 没有明确定义如何释放指向不是用 new 分配的内存地址的指针。比如下面的代码: 1 #include 2 3 using namespace std; 4 5 int main() { 6 int i = 1; 7 int *p0 = &i; 8 int *p1 = new int(); 9 int *p2 = 0;10 11 delete p0; // Compile OK, Run Error12 delete p1; // Compile OK, Run OK13 ... 阅读全文
posted @ 2014-04-01 13:52 依然冷月 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 在C++ Primer中,有这样的一道习题:除了逻辑与和逻辑或外,C++ 没有明确定义二元操作符的求解次序,编译器可自由地提供最佳的实现方式。只能在“实现效率”和程序语言使用中“潜在的缺陷”之间寻求平衡。你认为这可以接受吗?说出你的理由。标准答案如下:可以接受,因为操作数的求解次序通常对结果没有什么影响。只有当二元操作符的两个操作数涉及同一对象,并改变该对象的值时,操作数的求解次序才会影响计算结果,后一种情况只会在部分(甚至是少数)程序中出现。在实际运用中,这种“潜在的缺陷”可以通过程序员的努力得到弥补,但“实现效率”的提高却能使所有使用该编译器的程序收益,因此利大于弊。个人理解:随着环境的不 阅读全文
posted @ 2014-04-01 11:02 依然冷月 阅读(409) 评论(0) 推荐(0) 编辑