| |
| 1
2
3
4
5
6
7
8
9
10
11
12
13
|
与算术类型相比,类的转换更复杂。因为算术转换只涉及到精度的问题,而类对象的转换却涉及到能否转换以及怎样转换的问题。 隐式转换就是隐式转换,它会出现在你没有注意的地方。参看以下代码: classCMyInt { public: CMyInt(); CMyInt(inti); ~CMyInt(); private: intm_i; }; CMyInt::CMyInt() { m_i=0;... |
|
|
|
对于我们来说,3+1.5=4.5。但是对于计算机来说,这两个数的相加可不这么简单。因为3与3.0是不同的数据类型,3.0与1.5是可以相加的,3却不能与1.5相加。于是,C++在对上面的表达式进行处理时,有必要对其中一个(或两者)进行转换。 因为这个转换是“隐式”的,也就是说这个转换不让程序员知道,那么,系统就不能必须保证不产生损失,这个损失指的是精度。为了不损失精度,数据总是向精度高的类型转换。惟一的例外是当某个变量用作条件时,它被转换为bool型。 对算术类型的转换是... |
|
|
|
林锐博士曾将内存管理比喻为“雷区”(《高质量C++/C编程指南》第44页),内存管理这块难不难?恐怕不好说。“会者不难难者不会”嘛。但是说内存管理这块难以成为“会者”,应该是没有错的。 程序时时刻刻与内存打交道,只不过以往我们不用考虑,甚至不用知道。所以,所谓“内存管理”,是特指堆内存。 如果把堆内存和栈内存的使用放在一起考虑,可以降低对内存管理恐惧。 一、内存的分配: inti(100);//栈上分配内存 int*pi=newint(100... |
|
|
|
说到优先级,我能熟练背出“先乘除,后加减”,之于C++列出的整整19个优先级,每个优先级又包含若干个操作符,我总是看了就头皮发麻。以我的记性,连军旗里哪个大哪个小都背不出来,这几十个操作符——还是饶了我吧。 记住林锐博士的话:“如果代码行中的运算符比较多,用括号确定表达式的操作顺序,避免使用默认的优先级。”(《高质量C++/C编程指南》第26页)这样做最直接的作用是不用记忆了复杂的优先级了,不用记忆并不是因为懒,而是为了更清晰。毕竟程序不只是编给计算机运行的,当我们处在一个多人协作... |
|
|
|
把sizeof说成操作符可能有些不合习惯,因为sizeof的用法与函数没区别。但是sizeof与函数有着本质的区别:它是编译时常量。也就是说,在程序编译时,就会求出它的值,并且成为程序中的常量。 sizeof本身比较简单,惟一要提的就是它对数组名和指针进行操作的结果。 inta[10]; sizeof(a); 该操作返回的是数组所有元素在内存中的总长度。但是如果对指针进行操作,返回的则是指针本身的长度,与指针所指类型无关。 正因为数组名与指针有着千丝... |
|
|
|
我觉得条件操作符的存在就是为了简化if-else语句。第一,它与if-else语句的功能完全一致;第二,它虽然是一行语句,但是它规定了求解顺序,这个顺序保证了有些表达式不被求值。 条件操作符是有一定的危险性的,危险的原因在于它的优先级特别底,还容易漏掉括号。它的优先级仅仅高于赋值和逗号运算符,也就是说,只有在与赋值或逗号共存时,才可以免去括号,其它情况下都得加上括号。漏加括号的BUG是很难发现的。 比如“cout<<(i<j)?i:j;”这句的实际作用是... |
|
|
|
箭头操作符是C++发明的全新操作符,但却不是C++才用到的功能。早期的C语言虽然没有类,却有结构体,也允许有指向结构体对象的指针。不同的只是没有发明“->”这个符号来进行简化操作。说到底,“->”的出现只是代替原来就可以实现的功能。 引用:C++语言为包含点操作符和解引用操作符的表达式提供了一个同义词:箭头操作符(->)。 笔记:这一同义词的出现,不仅仅使程序简化而且更易于理解,更重要的是,它降低了出错的可能性。出什么错呢?这就跟操作符的优先级有关了:... |
|
|
|
|
|
|
|
|
|
|
|
|
| 指针真的令人头痛吗? |
| 关键词:编程,C++,VC,MFC,指针,数组 |
编程园地 - 编程感想 2006-07-14 15:50:48 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
 |
指针 (点击:185) |
|
|
 |
数组 (点击:184) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
 |
枚举 (点击:174) |
|
|
| 1
2
3
4
5
6
7
8
9
10
11
12
13
|
|
|