
C++Primer学习笔记
文章平均质量分 61
疯狂的红豆
拥有热情相信未来
展开
-
微软“匈牙利”法程序标示符命名规则
//头文件#pragma once //防止头文件二次编译#include#includeusing std::string;using std::ifstream;using std::ostream;//using namespace std;class Student //类名用大写字母开头的单词组合{protected: //可能会被作为基类继承,所以做成保护的原创 2012-11-19 01:57:56 · 3583 阅读 · 0 评论 -
虚析构函数解析
Ø C++ 指出:当一个派生类对象通过使用一个基类指针删除,而这个基类有一个非虚的析构函数,则结果是未定义的。运行时比较有代表性的后果是对象的派生部分不会被销毁。如果一个类要被另外一个类继承,而且用其指针指向其子类对象时,如A* d = new B();(假定A是基类,B是从A继承而来的派生类),那么其(A类)析构函数必须是虚的,否则在delete d时,B类的析构函数将不会被转载 2012-12-26 16:59:20 · 941 阅读 · 0 评论 -
C++中的const关键字系列——常类型与常指针之间的纠缠
说起const这个关键字,想必大家都不会陌生了。因为在高级编程语言的范畴内,几乎都有这么一个关键字。因为最近的一段时间内在类的设计与实现的时候,有某些需求是要用到const修饰符来修饰那些变量或是函数的,所以在用的同时也去百度了一下,同时也在看林锐博士的,还有,这三本书中的const部分。在不断的学习过程中不断的做总结,先从常类型与常指针之间的关联总结起吧。const可以修饰一个类原创 2012-12-26 18:44:15 · 2146 阅读 · 0 评论 -
野指针,悬垂指针,垃圾内存,内存“黑洞”
野指针首先他不是NULL指针,其次他指向的内存是不合法的,这个不合法的内存俗称“垃圾”内存。它产生的原因一个是在free或是delete后,没有及时将指针设置为NULL。野指针的检测也是很困难的,比如用if(0 == ptr)也是不行的,因为在free或是delete后ptr并没有被设置为NULL。关于为什么是(0 == ptr)而不是(ptr == 0),这一点建议去看Effective C++原创 2013-04-12 20:31:08 · 3890 阅读 · 3 评论 -
C++Primer学习笔记《1》
Void也是一种类型,常用于返回值为void的函数return处。C++只是规定了各种基本内置类型的最小存储空间,并没有限制其上限值,对于int,大部分的编译器实现采用的空间都会比要求的大,一般为32bits。但其规定最小空间大小是16bits。 在C++中,并没有关于bool类型的最小存储空间限制,bool变量在C++也许是不占用内存空间的,语言层面的实现就是宏定义,定义原创 2014-06-02 23:30:15 · 2152 阅读 · 0 评论 -
C++Primer学习笔记《2》
数组是一种复合类型,由类型名+数组名+维度组成。数组定义中的类型可以是C++基本内置类型,也可以是类类型的。数组元素的类型可以是除了引用类型以外的其他任何类型,没有所有的元素都是引用的数组。 数组的维度必须是大于或等于1的编译器常量,所谓的编译器常量就是指在编译期间就可算出结果的表达式,字面值常量,枚举类型,用常量表达式初始化的const对象。任何在编译器无法计算出的值都不可作为数原创 2014-06-04 01:07:49 · 1603 阅读 · 0 评论 -
C++Primer学习笔记《三》
数组名其实就是一个常指针,指向数组元素中第一个的地址,在程序中如果要用指针遍历数组,不能直接用数组名来自增或自减,因为它是常量,一般先把数组名保存一份同类型的指针,然后再用这个指针来自增或是自减来实现遍历。 指针也是可以进行算术加法和减法的,但必须保证原地址和结果地址都是想同一个数组的元素或是指向数组的末端元素的下一个单元(类似end())。指针的减法操作是有意义的,它表示原创 2014-06-21 23:59:32 · 1375 阅读 · 0 评论 -
C++primer学习笔记《4》
每一个表达式都有一个结果,字面值常量也是表达式,其结果就是值本身。除了特殊用法外表达式的结果是右值。是左值的情况也有,比如++i;这个表达式就是一个左值;还有逗号运算符的结果是表达式最右侧操作符德值,如果最右是一个左值的话,那整个逗号表达式就是左值。 表达式涉及到操作符和操作数,操作符有优先级规则,有结合性,还有操作数的求值顺序。就操作数的求值顺序而言,比如f1() * f2();两个函数原创 2014-08-23 17:20:42 · 1567 阅读 · 0 评论 -
C++Primer学习笔记《5》
类型转换在C++的很多代码中存在,更多的是在你看不到的背后执行的隐式类型转换。算术类型之间的转换是为了防止精度的丢失。如果左右操作数不一致且具备转换的条件,右操作数会被转换为左操作数类型。 类型转换发生在哪些地方:在混合表达式中表示范围较小的类型转换为表示范围较大的类型;当算术类型作为条件表达式中,算术类型为被转换为bool类型。 整形提升:整型里面比int小的(char,sign原创 2014-08-23 18:00:37 · 1799 阅读 · 0 评论