
C++
潘志威
全栈工程师
展开
-
C++ 继承与派生
面向对象程序设计有4个主要特点:抽象、封装、继承和多态性。在前面3章中学习了类和对象,了解了面向对象程序设计的两个重要特征——数据抽象与封装,已经能够设计出基于对象的程序,这是面向对象程序设计的基础。 面向对象技术强调软件的可重用性(softwarereusability)。C++语言提供了类的继承机制,解决了软件重用问题。一、 继承与派生的概念 在C++中可重用性是通过原创 2012-03-24 20:27:20 · 1424 阅读 · 0 评论 -
C++在继承的构造函数和析构函数
1. 在继承中,基类的构造函数构建对象的基类部分,派生类的构造函数构建对象的派生类部分。2. 当创建派生类对象时 先用派生类的构造函数调用基类的构造函数构建基类 ,然后再执行派生类构造函数构造派生类。即先构造基类再构造派生类的顺序。执行析构函数的顺序与此相反。3. 调用基类带参数的构造函数的方法:在派生类的构造函数中使用初始化列表的形式就可以调用基类带参数的构造函数初始化基类成员,原创 2012-03-28 14:32:39 · 4014 阅读 · 0 评论 -
C++ 模板
1.模板的概念。我们已经学过重载(Overloading),对重载函数而言,C++的检查机制能通过函数参数的不同及所属类的不同。正确的调用重载函数。例如,为求两个数的最大值,我们定义MAX()函数需要对不同的数据类型分别定义不同重载(Overload)版本。//函数1.int max(int x,int y);{return(x>y)?x:y ;}//函数2.float原创 2012-04-17 08:22:34 · 629 阅读 · 0 评论 -
linux一些指令操作
ls列出文件目录pwd显示当前所在的路径logout退出mkdir创建目录ls -l显示详细cd homework改变当前路径 进入homework;cd返回上一级目录rmdir 删除一个空目录vi编译器文件存在就打开 不存在就创建shift+:底部输入命令set number 显示行号 回车 按I键 esc回去 wq退出编原创 2012-03-22 14:15:49 · 1108 阅读 · 0 评论 -
C++继承中虚函数的使用
一:继承中的指针问题。1. 指向基类的指针可以指向派生类对象,当基类指针指向派生类对象时,这种指针只能访问派生对象从基类继承而来的那些成员,不能访问子类特有的元素 ,除非应用强类型转换,例如有基类B和从B派生的子类D,则B *p;D dd; p=ⅆ是可以的,指针p只能访问从基类派生而来的成员,不能访问派生类D特有的成员.因为基类不知道派生类中的这些成员。2.原创 2012-03-30 17:19:06 · 14365 阅读 · 6 评论 -
C++虚析构函数
1. 为什么需要虚析构函数:当使用new运算符动态分配内存时,基类的析构函数就应该定义为虚析构函数,不然就会出问题。比如类B由类A继承而来,则有语句A *p= new A;delete p; 这时没有问题 ,调用类A的析构函数释放类A的资源。但如果再把类B的内存动态分配给指针p时如p= new B; delete p;如果基类的析构函数不是虚析构函数的话就会只调用基类A原创 2012-03-30 17:38:39 · 1257 阅读 · 0 评论 -
C++异常处理
C++异常处理建立在三个关键字基础之上:try、catch和throw。通常,监测异常情况的程序语句包含在try中。如果try块中发生了异常(也就是错误),则用throw处理。异常由catch捕获,并得到处理如前所述,抛出异常的语句必须在try块中执行(在try块中调用的函数也可能抛出异常)。任何异常必须由紧跟在抛出异常的try语句之后的catch语句捕获。try和catch的一般形式如下:原创 2012-03-30 14:09:35 · 1025 阅读 · 0 评论 -
C++多重继承与虚基类
1. C++允许一个派生类从多个基类继承,这种继承方式称为多重继承,当从多个基类继承时每个基类之间用逗号隔开,比如class A:public B, public C{}就表示派生类A从基类B和C继承而来。2. 多重继承的构造函数和析构函数:多重继承中初始化的次序是按继承的次序来调用构造函数的而不是按初始化列表的次序, 比如有class A:public B, public C{}那么在定义类原创 2012-03-28 15:21:04 · 2821 阅读 · 0 评论 -
恐怖的C++语言
原文:http://coolshell.cn/?p=1724 (酷壳) Linus曾经(2007年9月)在新闻组gmane.comp.version-control.git里和一个微软的工程师(Dmitry Kakurin)争执过用C还是用C++,当时的那个微软的工程师主要是在做Git的Windows版,但他却发现Git的源码居然是C语言写的,而不是C++,于是他(Dmitry Ka转载 2012-03-25 19:14:16 · 2128 阅读 · 0 评论 -
恐怖的C++语言
Linus曾经(2007年9月)在新闻组gmane.comp.version-control.git里和一个微软的工程师(Dmitry Kakurin)争执过用C还是用C++,当时的那个微软的工程师主要是在做Git的Windows版,但他却发现Git的源码居然是C语言写的,而不是C++,于是他(Dmitry Kakurin)在Linux社区里发贴表示对Linux的不满,语言很直接:Pure翻译 2012-03-25 19:12:48 · 1140 阅读 · 0 评论 -
C++ 虚函数
假设有一个func函数,派生类里重写了基类的里的这个函数。那么这个派生类里的这个函数只有派生类的对象才可以调用。因为一个派生类的对象作为一个基类对象的引用或者是一个基类的指针指向这个派生类,它们的行为都像一个基类对象的行为。通过这个指针来调的话,将调用基类的func函数。如果一个变量是基类的引用,引用的是一个派生类的对象,或者派生类的对象传给函数(值传递或者应用传递)函数的形参是基类类型,那么基类原创 2012-03-25 17:38:14 · 734 阅读 · 0 评论 -
C++ 拷贝构造和赋值运算符重载
赋值运算符重载Thing &operator=(const Thing &t){ //判断是否赋值本身 if(*this!=t){ delete name; name=new Thing[strlen(t.name)+1]; strcpy(name,t.name); //其他变量也得赋值 }}拷原创 2012-03-24 08:47:04 · 1027 阅读 · 0 评论 -
继承与派生的一些概念
1、类的继承与派生 保持已有类的特性而构造新类的过程成为继承; 在已有类的基础上新增自己的特性而产生新类的过程称为派生; 被继承的已有类为基类;派生出的新类成为派生类。继承和派生其实是一回事。继承的目的是实现代码的重用,派生的目的是当新的问题出现的时候,原有的程序不能解决时,需要对原程序进行改造。派生类的声明:原创 2012-03-24 20:46:12 · 1164 阅读 · 0 评论 -
C++继承中覆盖和隐藏基类成员变量或成员函数
覆盖如果派生类覆盖了基类中的成员函数或成员变量,则当派生类的对象调用该函数或变量时是调用的派生类中的版本,当用基类对象调用该函数或变量时是调用的基类中的版本。隐藏看下边这个例子,B继承A 为什么main函数执行fun(x),fun(x,y)时编译通不过class A{ public: void f(int i,int j){原创 2012-03-27 16:57:18 · 6009 阅读 · 0 评论