C++
文章平均质量分 62
GeekFans
一个相信代码能改变世界的程序员。
展开
-
为什么构造函数不能为虚函数
1,从存储空间角度 虚函数对应一个vtable,这大家都知道,可是这个vtable其实是存储在对象的内存空间的。问题出来了,如果构造函数是虚的,就需要通过 vtable来调用,可是对象还没有实例化,也就是内存空间还没有,无法找到vtable,所以构造函数不能是虚函数。2,从使用角度 虚函数主要用于在信息不全的情况下,能使重载的函数得到对应的调用。构造函数转载 2012-09-06 16:42:45 · 46501 阅读 · 7 评论 -
为什么析构函数可以为虚函数,什么情况下需要将析构函数定义为虚函数?
首先要明确:1.每个析构函数(不加 virtual) 只负责清除自己的成员。2.可能有基类指针,指向的确是派生类成员的情况。(这是很正常的), 那么当析构一个指向派生类成员的基类指针时,程序就不知道怎么办了。 所以要保证运行适当的析构函数,基类中的析构函数必须为虚析构。 基类指针可以指向派生类的对象(多态性),如果删除该指针delete []p;就会调用转载 2012-09-06 16:36:31 · 11620 阅读 · 2 评论 -
Linux编程经验总结
1、C语言scanf读入double类型时,不能用%f,要用%lf,但是用printf输出double和float类型都用%f,因为此时float类型会被自动转换为double类型。2、vim配置文件里加入set mouse=a后,可以用鼠标点击定位,但是右键复制被屏蔽了,此时可以按住shift键进行选择语句然后点击右键就可以复制了,复制完松开shift键。原因是: 配置文件中的原创 2013-09-15 22:24:51 · 848 阅读 · 2 评论 -
C++编程总结
本文仅为记录在杭电ACM上使用C++做题过程中值得记录的技术使用细节。欢迎阅读和交流~~1、两个技术点:A、C++中如何判断输入结束;B、如何在任何值的情况下保留两位小数输出(如5 --> 5.00)。程序如下,实现了输入实数,输出绝对值的功能,且输出时保留两位小数。 double var; while(cin>>var) { if(var<0)原创 2013-09-16 23:42:36 · 1037 阅读 · 0 评论 -
输入一个英文句子,翻转句子中单词的顺序,单词内字符顺序不变
题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。例如输入“I am a student.”,则输出“student. a am I”。处理方法是首先将整个句子翻转,然后再将其中的每个单词翻转。代码如下: #include using namespace std;void myReverse原创 2012-09-03 10:04:38 · 13264 阅读 · 5 评论 -
C++全局变量在多个源代码文件中的使用
在比较大的项目中,如果需要使用全局变量,那么就需要注意一些全局变量声明、使用不当引起的问题了。本篇文章主要内容有两个:普通全局变量、静态全局变量、全局常量。1、普通全局变量:假设我们需要在多个不同的编译单元(比如两个.cc文件)中使用全局变量进行传值,如我们有如下三个源码文件:main.cc:运行入口,有一个main函数,其中会打印出全局变量var的值;#include "def.原创 2014-10-27 17:06:47 · 25609 阅读 · 4 评论