
C++
qwertdsdf
这个作者很懒,什么都没留下…
展开
-
C++-类和对象
任何一个对象都应该具有两个要素:属性、行为面向对象的程序设计一个重要的特点是封装性,所谓封装指的是:将有关数据和操作代码封装在一个对象中,形成一个基本单位,各个对象相互独立,互不影响将对象中某些部分对外隐蔽,只留下少量接口与外界联系C++中对象的函数名就是对象的对外接口,外界可以通过函数名来调用这些函数来实现某些功能。类是对象的抽象,而对象是类的特例。多态性:如果有几个相似而不完全相同的对象,又是...原创 2018-07-09 10:53:16 · 447 阅读 · 0 评论 -
C++ - 面向过程
C语言没有提供逻辑型数据,关系表达式的值分别用数值1和0代替。C++增加了逻辑型数据。逻辑常量只有两个,即false和true。占用一个字节大小逻辑型变量要用类型标识符bool来定义,它的值只能是true和false之一。(因为逻辑变量由bool来定义,因此也成为布尔变量) else总是与它上面最近的、且未配对的if配对。如果if与else的数目不一样,为实现程序设计者的意图,...原创 2018-07-06 17:25:07 · 1016 阅读 · 0 评论 -
派生类的构造和析构
派生类构造函数名(总参数表列) :基类构造函数名(参数表列){派生类中新增数据成员初始化语句}先调用基类的构造函数,再调用派生类的构造函数。析构顺序与构造顺序相反。在类中对派生类的构造函数作声明时,不包括基类构造函数名及其参数表列,只有在定义的时候给出。#include <iostream>using namespace std;class parent {pub...原创 2018-07-25 10:38:33 · 461 阅读 · 0 评论 -
多态
在C++中,多态性是指具有不同功能的函数可以用同一个函数名,这样就可以用一个函数名调用不同内容的函数。面向对象的方法中这样表述多态性:向不同对象发送同一个消息,不同的对象在接收时会产生不同的方法。#include <iostream>using namespace std;class point {public: virtual void print() { c...原创 2018-07-26 17:30:02 · 184 阅读 · 0 评论 -
虚函数
由虚函数实现的动态多态性就是:同一类族中不同类的对象,对同一函数调用作出不同的响应。虚函数的使用方法:在基类中用virtual声明成员函数为虚函数。 //在类外定义虚函数时,不必再加virtual 在派生类中重新定义此函数,要求函数名、函数类型、函数参数个数和类型全部与基类的虚函数相同,并根据派生类的需要重新定义函数体。 //C++规定,当一个成员函数被声明为虚函数后,其派生类中的同名...原创 2018-07-27 14:33:23 · 214 阅读 · 0 评论 -
纯虚函数和抽象类
纯虚函数的作用是在基类中为其派生类保留一个函数的名字,以便派生类根据需要对它进行定义。纯虚函数的一般形式:virtual 函数类型 函数名 (参数表列)=0;如果在一个类中声明了纯虚函数,而在其派生类中没有对该函数定义,则该虚函数在派生类中仍然为纯虚函数。 不用来定义对象而只作为一种基类类型用作继承的类,称为抽象类。凡是包含纯虚函数的类都是抽象类。如果在派生类中没有对所...原创 2018-08-13 09:29:13 · 412 阅读 · 0 评论 -
C++面向对象模型
在C++类中有两种数据成员,三种成员函数C++中的数据成员和成员函数是分开存储的。普通的成员变量存储在对象中,与struct变量的对齐方式相同。静态的成员变量存储在全局数据区。成员函数存储在代码段。 编译器添加数据的情况:为了支持各种virtual特性 //虚基类 虚函数 边界对齐要求 //#include <iostream>u...原创 2018-09-06 22:44:04 · 189 阅读 · 0 评论 -
类模板
有时,有两个或多个类,其功能相同,仅仅数据类型不同,可以采用类模板来避免重复工作。template <class numtype>class Compare {public: Compare(numtype a, numtype b) { x = a; y = b; } numtype max() { return (x > y) ? x : y; ...原创 2018-09-12 21:16:51 · 250 阅读 · 0 评论 -
多继承
虚基类:如果一个派生类有多个直接基类,而这些直接基类又有一个共同的基类,则在最终的派生类中会保留该间接共同基类数据成员的多分同名成员。在一个类中保留间接共同基类的多份同名成员,这种现象是人们不希望出现的,C++提供虚基类的方法,使得在继承间接基类时只保留一份成员。 虚基类并不是在声明基类时声明的,而是在声明派生类时,指定继承方式时声明的。声明虚基类的一般形式:class 派生类...原创 2018-09-10 16:34:41 · 261 阅读 · 0 评论 -
重载 重写 重定义
重载发生在一个类里面或者同一个作用域中 (函数名相同,参数不同)子类无法重载父类的函数,子类中的同名函数会覆盖父类的函数 重写包括虚函数重写和非虚函数重写(重定义)虚函数重写就是基类和派生类中的虚函数的函数类型、函数名、函数参数类型完全一样;使用virtual关键字重定义就是基类中的函数名和派生类中的函数名一样 //函数的返回类型和参数可以不一样;不使用virtual关...原创 2018-09-10 22:28:54 · 215 阅读 · 0 评论 -
C++强制类型转换
C++的强制类型转换具有如下形式:cast-name <type>(expression);cast-name是static_cast dynamic_cast const_cast reinterpret_cast 中的一种。 static_cast:基本的数据类型转换(类似于C中的自动类型转换)例:将double型强转成int型double a = ...原创 2018-10-29 22:40:41 · 301 阅读 · 0 评论 -
C++ -数据类型
C++数据结构:cout<<'\n'; 与 cout<<endl; 相同,有一点差别如下:endl会刷新缓冲区,但是 '\n' 不会endl 除了往输入流中写入一个'\n',还会调用fflush函数,刷新缓冲区。没有必要尽量使用cout<<'\n';过多使用endl会影响程序的执行效率。关于逗号表达式的应用:#include <iostream>...原创 2018-07-06 11:35:47 · 194 阅读 · 0 评论 -
C++与C
C++保留了C语言原有的所有优点,增加了面向对象的机制。C++是C语言的超集,C++对C的增强,表现在两个方面:在原有面向过程的基础上,对C语言的功能做了不少扩充 增加了面向对象的机制C++的标准库的中类和函数是在命名空间std中声明的,因此如果程序中需要用到C++标准库,就要用using namespace std 作声明。C++对C的增强:register关键字(C++可以...原创 2018-07-06 10:42:10 · 370 阅读 · 0 评论 -
C++-构造函数
C++提供了构造函数来处理对象的初始化。构造函数是一种特殊的成员函数,与其他成员函数不同,不需要用户来调用它,而是在建立对象时自动执行。构造函数的名字与类名同名,以便编译系统识别;不具有任何类型,不返回任何值。也可以在类内对构造函数进行声明,而在类外定义。如果用户没有定义构造函数,则C++系统会自动生成一个构造函数,只是这个构造函数的函数体是空的,也没有参数。这个函数叫做默认构...原创 2018-07-09 11:35:53 · 272 阅读 · 0 评论 -
C++-析构函数
析构函数也是一个特殊的成员函数,它的作用与构造函数相反,它的名字是类名的前面加一个 ~ 符号。当对象的生命期结束时,会自动执行析构函数,如一下情况:函数中定义一个对象,当这个函数调用结束,对象应该被释放,对象释放前自动执行析构函数static局部对象在函数调用结束时对象并不释放,只在main函数结束或调用exit函数时,才调用static局部对象的析构函数如果定义了一个全局对象,则在程序的流程离开...原创 2018-07-09 14:40:15 · 235 阅读 · 0 评论 -
C++-引用
对一个数据可以使用引用,这个C++对C的一个重要扩充,引用是一种新的变量类型,它的作用是为一个变量起一个别名。在声明一个引用型变量时,必须同时使之初始化,即声明它代表哪一个变量。引用完成后,在它们所在的函数执行期间,该引用类型变量不能再作为其他变量的引用。 C++之所以增加引用类型,主要是把它作为函数参数,以扩充函数传递数据的功能。引用的本质就是一个指针常量。 void *c...原创 2018-07-09 17:31:25 · 187 阅读 · 0 评论 -
new和delete
在C语言中利用库函数malloc和free来分配和释放内存空间的。C++中提供了运算符new和delete来取代malloc和free函数。用new分配空间时,如果由于内存不足等原因而无法正常分配空间,则new会返回一个空指针NULL。 int *p=new int(5); //开辟int类型大小的空间,并赋值4,将空间首地址传给pdelete p; //释放空间int *...原创 2018-07-17 09:54:29 · 158 阅读 · 0 评论 -
类的静态成员
静态数据成员在内存中只占一份空间。每个对象都可以引用这个静态数据成员。静态数据成员的值对所有对象都是一样的。如果改变它的值,则在各对象中这个数据成员的值都同时改变了。//静态数据成员存储在全局数据区在为对象所分配的空间中不包括静态数据成员所占的空间。静态数据成员不随对象的建立而分配空间。(也就是就算没有创建对象,这个静态数据成员也存在) 静态数据成员只能在类体外进行初始...原创 2018-07-17 11:07:52 · 351 阅读 · 0 评论 -
C++-命名空间
命名空间是ANSI C++引入的可以由用户命名的作用域,用来处理程序中常见的同名冲突。使用命名空间成员的方法:命名空间名::命名空间成员名 (ns1::a)使用命名空间别名 3.使用using命名空间成员名 (using声明的有效范围是从using语句开始到using所在的作用域结束。using ns1::Student;) 注:同一作用域中using声明的不同命名空间的成员不能有同名...原创 2018-07-11 09:56:01 · 151 阅读 · 0 评论 -
求值顺序
几乎所有的C++运算符的求值顺序都是未指定的。C/C++中有4种运算符明确规定了运算对象的求值顺序。&&||?:, 运算符优先级的高低,等同于用括号括起来高的,但是求值顺序是不一定的,只有上述四种运算符指定了求值顺序。...原创 2018-07-23 15:57:42 · 241 阅读 · 0 评论 -
友元
友元可以访问与其有好友关系的类中的私有成员。友元包括友元函数和友元类。友元函数如果在本类以外的其他地方定义了一个函数,在类体中用friend对其进行声明,此函数就是友元函数。(声明可以放到private或public后)一个友元函数的例子:#include <iostream>#include <math.h>using namespace std;...原创 2018-07-18 10:00:41 · 253 阅读 · 0 评论 -
运算符重载
运算符重载的方法是定义一个重载运算符的函数,在需要执行被重载的运算符时,系统就自动调用该函数,以实现相应的运算,也就是说,运算符重载是通过定义函数实现的。运算符重载实质上是函数的重载。 运算符重载的函数一般格式如下:函数类型 operator 运算符名称 (形参表列){对运算符的重载处理} C++不允许用于自己定义新的运算符,只能对已有的C++运算符进行重载C+...原创 2018-07-18 15:33:37 · 249 阅读 · 0 评论 -
类的继承
在C++中,所谓继承是在一个已存在的类的基础上新建一个新的类。已存在的类称为 基类 或 父类。新建的类称为 派生类 或 子类。 一个基类可以派生出多个派生类,每一个派生类又可以作为基类再派生出新的派生类,因此基类和派生类是相对而言的。一个派生类只从一个基类派生,这称为单继承。一个派生类有两个或多个基类的称为多重继承。派生类是基类的具体化,而基类是派生类的抽象。 ...原创 2018-07-24 10:11:46 · 281 阅读 · 0 评论 -
输入输出流
C++的输入输出流是指由若干个字节组成的字节序列,这些字节中的数据按顺序从一个对象传送到另一个对象。流表示了信息从源到目的的流动。在输入操作时,字节流从输入设备流向内存,在输出操作时,字节流从内存流向输出设备。流中的内容可以是ASCII字符、二进制形式的数据、图形图像、数字音频视频或其他形式的信息。流提取运算符从流中提取数据时通常跳过输入流中的空格、tab、换行等空白字符。...原创 2018-11-02 22:55:50 · 190 阅读 · 0 评论