摘要: 代码: 输出: 分析: define在预处理时进行替换,且忽略代码逻辑,替换范围为当前位置之后。 阅读全文
posted @ 2016-05-19 14:16 hu983 阅读(260) 评论(0) 推荐(0) 编辑
摘要: 代码: 输出: 分析: 如果表达式包含signed和unsigned int,signed会被转换为unsigned。如果int 操作数的值恰为负数,其转换为unsigned int可能会变为一个很大的正数(转换结果是该负值对unsigned int的取值个数求模)。所以最好避免对int和unsig 阅读全文
posted @ 2016-05-19 10:49 hu983 阅读(428) 评论(0) 推荐(0) 编辑
摘要: 代码: 输出: 分析: 注意派生类对象的地址与第一个父类地址相同,与第二个父类地址不同。 阅读全文
posted @ 2016-05-18 16:44 hu983 阅读(375) 评论(0) 推荐(0) 编辑
摘要: 代码: 输出: 分析: 1、静态成员变量不能在类中初始化,需要在类外初始化。 2、静态成员函数只能访问静态成员变量,普通成员函数则没有这个限制。 3、静态成员函数不能为虚函数。 阅读全文
posted @ 2016-05-18 15:46 hu983 阅读(815) 评论(0) 推荐(0) 编辑
摘要: 代码: 输出: 分析: switch只判断一次,如果没有break会顺序向下执行。 阅读全文
posted @ 2016-05-18 13:13 hu983 阅读(2557) 评论(0) 推荐(0) 编辑
摘要: 代码: 输出: 分析: 1、虚析构函数的作用:当基类指针指向派生类并delete时,可以调用派生类的析构函数; 2、私有析构函数的作用:令对象只能在堆上生成,即用new方法。原理是C++是一个静态绑定语言,在编译过程中,所有的非虚函数调用都必须分析完成(虚函数也要检查可访问性)。因此,当在栈上生成对 阅读全文
posted @ 2016-05-17 14:26 hu983 阅读(5387) 评论(0) 推荐(1) 编辑
摘要: 代码: 输出; 分析: 假如注释掉代码第19行,编译将会出错。 阅读全文
posted @ 2016-05-16 19:05 hu983 阅读(287) 评论(0) 推荐(1) 编辑
摘要: 代码: 输出: 分析: 注意普通成员函数与静态成员函数的不同。 阅读全文
posted @ 2016-05-15 14:05 hu983 阅读(357) 评论(0) 推荐(0) 编辑
摘要: 代码: 输出: 假如程序第13行改为 则输出变为 分析: cout先输入到缓冲区(没有直接输出到屏幕),执行fork后缓冲区被复制。加了endl则会直接输出,可以看出endl有换行和清空的作用。 阅读全文
posted @ 2016-05-10 23:33 hu983 阅读(552) 评论(0) 推荐(0) 编辑
摘要: 代码: 输出: 分析: cout流的操作顺序是——先从右往左读入缓冲区,然后再从左往右输出。 需要注意的是,当它从右边往左读的时候,碰到函数先去执行函数,并把函数返回值读入缓冲区。(函数的返回类型不能是void,否则编译出错) 阅读全文
posted @ 2016-05-10 22:48 hu983 阅读(655) 评论(0) 推荐(0) 编辑