面向对象程序设计[笔记]
文章平均质量分 61
面向对象程序设计[笔记]
肉丸不肉
这个作者很懒,什么都没留下…
展开
-
C++ 中include头文件尖括号<>与双引号""的区别
预处理器发现 #include 指令后,就会寻找后面跟的文件名并把这个文件的内容包含到当前文件中。被包含文件中的文本将替换源代码文件中的#include指令,就像你把被包含文件中的全部内容键入到源文件中的这个位置一样。但是包含头文件有两种方式,尖括号和双引号。简单区分:1,系统自带的头文件用尖括号括起来,这样编译器会在系统文件目录下查找。 #include <xxx.h> 2,用户自定义的文件转载 2017-11-07 08:29:54 · 2467 阅读 · 0 评论 -
第9章--模板
函数模板+类模板 一、 函数模板: 1. 函数模板可以用来创建一个通用功能的函数,以支持多种不同形参,进一步简化重载函数的函数体设计。 2. 定义方法: template <模板参数表> 3. 函数定义 模板参数表的内容 类型参数:class(或typename) 标识符 常量参数:类型说明符 标识符 模板参数:template <参数表> class 标识符例:求绝对值原创 2017-12-11 22:34:25 · 169 阅读 · 0 评论 -
第8章--多态性与虚函数
一、多态 1。是指具有不同功能的函数可以用同一个函数名。 函数的重载,运算符的重载其实是多态性的现象。 2。多态性分为以下两类:静态多态性:又称编译时的多态性。编译器对源程序进行编译时就可以确定所调用的是哪一个函数。 实现方式:函数重载(普通函数、成员函数、构造函数) 运算符重载动态多态性:有称为运行时的多态性。在程序运行过程原创 2017-12-12 12:34:21 · 708 阅读 · 0 评论 -
第七章--继承与派生
一、派生类的声明方式声明派生类的方法: class 派生类名:[ 继承方式 ] 基类名 { 派生类新增的成员 }; 继承方式: Public:公用方式; Private:私有方式; Protected:受保护方式。 继承方式默认为私有方式。不同继承方式的影响主要体现在: 派生类成员对基类成员的访问权限 通过派生类对象对基类成员的访问原创 2017-12-12 23:01:58 · 381 阅读 · 0 评论 -
第11章--流类库的输入和输出
一、>> 读操作:从流中提取在输入时,从键盘输入的数据先放在键盘缓冲区中,形成 cin 流,然后用提取运算符“>>”从输入缓冲区提取数据,送给程序中的相关变量。<< 写操作:向流中插入当使用 cout 和插入符“<<” 输出数据时,先将这些数据送到程序中的输出缓冲区保存,直到缓冲区满了或遇到endl,就将缓冲区中的全部数据送到显示器。总之:内存缓冲区中的数据就是流。二、 C++的输入原创 2017-12-11 17:42:33 · 613 阅读 · 0 评论 -
c/c++ 字符数组、字符指针和字符串类型总结帖
一、字符数组C++中字符数组用char str[]可以用来表示一个字符串。 (1) 数组的大小和字符串的长度。 数组的大小一定要大于字符串的长度,因为系统会自动补上一个’\0’作为字符串的结束标志。当然对于未初始化的也补’\0’.#include <iostream> #include <string> using namespace std; int main() {转载 2017-12-18 11:46:01 · 591 阅读 · 0 评论 -
虚基类详解
1. C++提供虚基类(virtual base class)的方法,使得在继承间接共同基类时只保留一份成员。 http://blog.csdn.net/bqw2008/article/details/41253289转载 2017-12-18 11:50:10 · 379 阅读 · 0 评论 -
C++的运算符重载
C++中预定义的运算符的操作对象只能是基本数据类型。但实际上,对于许多用户自定义类型(例如类),也需要类似的运算操作。这时就必须在C++中重新定义这些运算符,赋予已有运算符新的功能,使它能够用于特定类型执行特定的操作。运算符重载的实质是函数重载,它提供了C++的可扩展性,也是C++最吸引人的特性之一。 运算符重载是通过创建运算符函数实现的,运算符函数定义了重载的运算符将要进行的操作。运算符函数的转载 2017-12-27 10:29:24 · 153 阅读 · 0 评论 -
c++类模板
http://blog.csdn.net/hudfang/article/details/50714810转载 2017-12-27 10:45:30 · 148 阅读 · 0 评论 -
c++常对象 常数据成员 常成员函数
http://blog.csdn.net/huangyimo/article/details/52154821转载 2017-12-27 10:57:28 · 399 阅读 · 0 评论 -
c++异常处理
c++提供了异常。 1)C++的异常处理机制使得异常的引发和异常的处理不必在同一个函数中,这样底层的函 数可以着重解决具体问题,而不必过多的考虑异常的处理。上层调用者可以再适当的位置设计对 不同类型异常的处理。 2)异常是专门针对抽象编程中的一系列错误处理的,C++中不能借助函数机制,因为栈结 构的本质是先进后出,依次访问,无法进行跳跃,但错误处理的特征却是遇到错误信息就想要转 到若干级转载 2017-12-27 11:05:25 · 294 阅读 · 0 评论 -
c++new和delete
new和C++ delete运算符用于动态分配和撤销内存的运算符 new用法: 1.开辟单变量地址空间 1)new int; //开辟一个存放数组的存储空间,返回一个指向该存储空间的地址.int *a = new int 即为将一个int类型的地址赋值给整型指针a. 2)int *a = new int(5)作用同上,但是同时将整数赋值为5 2.开辟数组空间 一维转载 2017-12-27 11:14:20 · 250 阅读 · 0 评论 -
c++格式化输出
小数点后几位: http://blog.csdn.net/RayKevin/article/details/53152154转载 2017-12-27 11:31:18 · 202 阅读 · 0 评论 -
c++ vercor list区别
1.vector其实vertor就是升级版的数组,升级在哪里呢?数组在声明时就已经确定了大小,例如int a[20]就规定了这个数组最多只能存放20个元素,而vector的长度则是不固定的,通过一些方法可以自动的分配插入和删除释放一些内存空间,避免浪费内存和内存不够用。vector的几个基本方法如下:函数名 功能 复杂度size() 返回向量的元素数 O(转载 2017-12-27 11:39:54 · 581 阅读 · 0 评论 -
c++setfill和setw
所使用的头文件为iomanip.h 例如:cout<<'s'<<setw(8)<<'a'<<endl;则在屏幕显示 s a //s与a之间有7个空格,setw()只对其后面紧跟的输出产生作用,如上例中,表示’a’共占8个位置,不足的用空格填充。若输入的内容超过setw()设置的长度,则按实际长度输出。 setw()默认填充的内容为空格,可以setfill()配合使用设置其他字转载 2017-12-27 11:44:15 · 1108 阅读 · 0 评论 -
实验三 、四 继承、派生和多态程序设计
#include <iostream>using namespace std;class student{private: string num; int score;public: student(string a = 0, int b = 0) { num = a; score = b; } string原创 2017-12-17 00:18:03 · 655 阅读 · 0 评论 -
虚函数
实现多态。对于多态来说,实际上就是用父类型的指针指向子类的实例,然后通过父类的指针调用子类的成员函数,这种技术使得父类型的指针有多种形态,这是一种常见的泛型技术,除虚函数外,还有模板技术,RTTI技术也属于泛型技术。具体介绍: http://blog.csdn.net/acdreamers/article/details/44042285实现机制:虚函数表。 http://blog.csdn.n原创 2017-12-18 19:33:36 · 157 阅读 · 0 评论 -
c++构造函数
C++中的构造函数 C++中的构造函数可以分为4类: (1)默认构造函数。以Student类为例,默认构造函数的原型为 Student();//没有参数 (2)初始化构造函数 Student(int num,int age);//有参数 (3)复制(拷贝)构造函数 Student(Student&);//形参是本类对象的引用 (4)转换构造函数 Student(in转载 2017-10-23 23:37:33 · 351 阅读 · 0 评论 -
c++STL sort()排序
STL里面有个sort函数,可以直接对数组排序,复杂度为n*log2(n)。使用这个函数,需要包含头文件#include 。 这个函数可以传两个参数或三个参数。第一个参数是要排序的区间首地址,第二个参数是区间尾地址的下一地址。也就是说,排序的区间是[a,b)。简单来说,有一个数组int a[100],要对从a[0]到a[99]的元素进行排序,只要写sort(a,a+100)就行了,默认的排序方式是原创 2017-10-23 17:22:14 · 593 阅读 · 0 评论 -
STL
一.什么时候用STL 如果,有的时候,你要在程序中用到堆、栈、队列、链表等一些基本的算法,而你又实在不想自己去实现数据结构教科书中那些繁琐的算法,那么你就可以考虑使用STL。 另外,STL作为一种标准,便于交流,掌握它,一方面可以让你写的程序,易于让别人理解,另一方面你也能够比较容易地理解别人写的程序。 二.什么是STL 全称为 Standard Template转载 2017-11-07 09:16:33 · 236 阅读 · 0 评论 -
排序
冒泡排序: 在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。for(i = 0; i < n-1; i++) /*冒泡一次放好一个数,冒泡n-1次就可以全部放置好*/ for(j = 0; j < n-1-i; j++) /*后面转载 2017-10-29 13:53:48 · 242 阅读 · 0 评论 -
c++引用和引用作为函数参数
http://blog.csdn.net/chaipp0607/article/details/60151813转载 2017-10-14 13:04:38 · 282 阅读 · 0 评论 -
c++常量指针和指针常量--const
http://blog.csdn.net/chaipp0607/article/details/77864969转载 2017-10-14 13:09:54 · 232 阅读 · 0 评论 -
包含所有C++头文件的头文件 <bits/stdc++.h>
http://blog.csdn.net/FX677588/article/details/69776258?locationNum=2&fps=1转载 2017-10-14 14:56:26 · 879 阅读 · 0 评论 -
C\C++中头文件string与string.h的区别
http://blog.csdn.net/smf0504/article/details/52227542转载 2017-10-14 14:59:55 · 1517 阅读 · 0 评论 -
C++中的bool类型
考研中可以直接使用bool类型,因为C++中支持bool类型。 有关bool类型,c++支持的关键字有,bool,false,true这三个。bool aaa= false; bool bbb =true; 这样的话aaa就被赋值为0,而bbb被赋值为0.这里涉及一些隐式转换。任何非0值,都是true,任何0值都是false.转载 2017-10-14 15:16:07 · 965 阅读 · 0 评论 -
c++中栈和队列的头文件
使用标准库的栈和队列时,先包含相关的头文件#include<stack>#include<queue>定义栈如下: stack<int> stk; 定义队列如下: queue<int> q; 栈提供了如下的操作s.empty() 如果栈为空返回true,否则返回false s.size() 返回栈中元素的个数 s.pop(转载 2017-10-14 15:22:38 · 18864 阅读 · 0 评论 -
c++封装
1、封装 c++c是通过类来实现封装的,把这些数据和数据有关的操作封装在一个类中,或者说类的作用就是把数据和算法封装在用户声明的抽象数据类型中。 2、限定符 public:公共的 private:私有的 protected:受保护的 3、封装实例#include<iostream> #include <stdlib.h> #include <string> using nam转载 2017-10-23 23:17:57 · 492 阅读 · 0 评论 -
C语言中%d %.2d %2d %02d的区别
%d:即为普通的输出。%2d:按宽度为2输出,右对齐方式输出。若不够两位,左边补空格。%02d:同样宽度为2,右对齐方式。位数不够,左边补0。%.2d:从执行效果来看,与%02d一样。转载 2017-10-24 19:20:03 · 55896 阅读 · 5 评论 -
cout输出浮点数指定位数
在C语言的编程中,我们可以这样实现它: printf(“%.2f”, sample); c++中:#include <iomanip>。//头文件必须有使用setprecision()函数cout.setf(ios::fixed); cout<<fixed<< setprecision(2) << a <<endl; //输出a=0.20 cout.unsetf(ios::fixed);转载 2017-10-11 22:58:17 · 1755 阅读 · 0 评论 -
c++关于类和对象的实例
c++是面向对象的程序设计。 重要的概念:类、对象、数据成员、成员函数、共有、私有。 具体实例如下: http://c.biancheng.net/cpp/biancheng/view/2162.html定义一个类,定义此类的对象,引用类的多个成员引用多个对象的成员调用函数数据成员的值不由键盘输入,由调用函数时实参给出含成员函数的类 题目 一步一步的变化加深引出其他的概念,而且注意转载 2017-10-24 20:41:34 · 2241 阅读 · 0 评论 -
函数重载
函数重载是什么??为什么要函数重载??函数重载可以做哪些 事?? 函数重载是指在同一作用域内,可以有一组具有相同函数名,不同参数列表的函数,这组函数被称为重载函数。 重载函数通常用来命名一组功能相似的函数,这样做减少了函数名的数量,避免了名字空间的污染,对于程序的可读性有很大的好处。 首先我先解释名字空间这个概念。还是实例吧。#include<iostream> using namesp转载 2017-10-25 16:43:58 · 394 阅读 · 0 评论 -
函数模板
函数模板可以用来创建一个通用的函数,以支持多种不同的形参,避免重载函数的函数体重复设计。它的最大特点是把函数使用的数据类型作为参数。函数重载->函数模板函数模板的声明形式为:template<typename 数据类型参数标识符><返回类型><函数名>(参数表){ 函数体}其中,template是定义模板函数的关键字;template后面的尖括号不能省略;typename(或class)是声明转载 2017-10-25 16:57:34 · 360 阅读 · 0 评论 -
有默认参数的函数
我们可以赋予函数参数默认值。所谓默认值就是在调用时,可以不写某些参数的值,编译器会自动把默认值传递给调用语句中。默认值可以在声明或定义中设置;也可在声明或定义时都设置,都设置时要求默认值是相同的。 1、若给某一参数设置了默认值,那么在参数表中其后所有的参数都必须也设置默认值,否则,由于函数调用时可不列出已设置默认值的参数,编译器无法判断在调用时是否有参数遗漏。 2、在调用时,若给已经设置默认值的参转载 2017-10-25 21:47:07 · 6046 阅读 · 0 评论 -
引用--引用作参数
&:如果形参为引用类型,则形参是实参的别名,&的使用说明此处只是原参数的另一个名字而已1.【值传递】如果形参为非引用的传值方式,则生成局部临时变量接收实参的值。 void Swap (int left, int right) /*值传递的方式无法实现交换,因为传参时对于参数left和right拷贝一临时副本,交换的是副本值,因为其是临时变量函数退出,变量销毁,并不会影响外部left和right的转载 2017-10-25 21:59:57 · 633 阅读 · 0 评论 -
c++文件的输入和输出
很混乱。。。。大体介绍: http://blog.csdn.net/Slience_Perseverance/article/details/7789914非常详细: http://www.cnblogs.com/mupiaomiao/p/4730757.html原创 2017-12-18 20:02:30 · 224 阅读 · 0 评论