随笔分类 - C++
c++ fstream中seekg()和seekp()的用法
摘要:先说一下C语言中fseek()的功能:函数原型:int fseek(FILE *fp, LONG offset, int origin)参数含义:fp 文件指针 offset 相对于origin规定的偏移位置量 origin 指针移动的起始位置,可设置为以下三种情况: SEEK_SET 文件开始位置 SEEK_CUR 文件当前位置 SEEK_END 文件结束位置C++中seep()和seekg()函数功能seekp:设置输出文件流的文件流指针位置seekg:设置输入文件流的文件流指针位置函数原型:ostream& seekp( streampos pos );ostream&
阅读全文
值为NULL的对象指针仍可调用函数
摘要:#include <iostream>using namespace std;class A{public: void SayHello() { cout << "Hello!" << endl; }protected:private:};int main(){ A* obj = new A(); obj->SayHello(); delete obj; obj = NULL; obj->SayHello(); return 0;} 1、应该保证在delete obj;之后,不再使用obj原来指向的对象。2、类中定义的成员函数
阅读全文
何时调用复制构造函数
摘要:1、按值传递对象2、函数返回对象3、复制初始化,即用一个对象初始化另一个对象#include <iostream>using namespace std;class A{public: A() { cout << "constructor" << endl; } A(const A& a) { cout << "copy constructor" << endl; } ~A() { cout << "destructor" << endl; }
阅读全文
new/delete与malloc/free
摘要:malloc/free带的来问题很简单:它们对构造函数和析构函数一无所知。——〈Effective C++〉new/delete会与构造函数和析构函数有适当的互动,这样可以保证动态创建对象和释放对象的正确性。不要将malloc/free和new/delete混用,必须一一对应。使用了malloc的必须使用free来释放,而使用new的必须使用delete来释放,否则会出现不可预料的问题,其结果是所谓的“未定义”:在开发和测试阶段都没问题,但会在你最重要的客户面前爆发。
阅读全文
虚析构函数与纯虚析构函数
摘要:http://hi.baidu.com/littlefishaa/item/de833119c5400c4a6926bb86这是一篇介绍虚析构函数的文章,写得挺好。析构函数是在销毁对象的时候用来做清理现场的工作的,一般的类的析构函数会在对象销毁时自动调用。在面向对象程序设计中,经常会出现用基类对象实例化得到子类对象的情况,此时在销毁对象的时候可能会出现问题,如果基类的析构函数不是虚函数,则系统只会调用基类的析构函数而不会调用相应子类的析构函数。显式声明基类的虚析构函数可以使所有子类的析构函数也变成虚函数,保证系统在销毁对象时先调用子类的析构函数,再逐层向上调用基类的析构函数。http://ba
阅读全文
浙公网安备 33010602011771号