C++重点难点汇总精华_第1页
C++重点难点汇总精华_第2页
C++重点难点汇总精华_第3页
C++重点难点汇总精华_第4页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、封装继承多态1. 封装,数据部分, class name2. 继承 , 在实现程序时, 可以像生活中儿子继承父母遗产一样,子类将父类中的属性 ( 类中的数据成员 ) 和行为 ( 类中的成员函数 ) 继承,从而实现父类所有内容为子类所用的功能 ( 代码重用 )3. 多态 , 在实现程序时,可以将父类的行为 ( 类中的成员函数 ) 再次定义从而实现新的行为 ( 重载,重写 ) ,使程序的执行结果多样化其实类的话和结构体的字节大小算法不一样,不管它的大小Public (本类,子类,其他类)- protected(本类,子类) - private(本类)。Private私有的只能在一个地方(本类)访问

2、。类的初始化1. 在类里面,必须创建对象之后才能初始化,不能在类里面直接初始化。一般数据类型不能在类外面初始化,但是静态的( static)类型可以再类的外面进行初始化- (有且只有 static在类外可以初始化,因为静态的是在全局数据区存放的,在编译的时候就给它分配内存了)。2. 类里面的数据可以是任意的,但是不能有本类的对象(因为不知道怎么分配内存) ,本类的指针是可以的,3. 静态函数当中不能出现 this ,this 是在运行的时候才有。构造函数1. 构造函数的作用就是对类里面的数据进行初始化2. 构造函数是自动调用3. 构造函数不能写返回值,4. 最好写一个自己的默认构造函数以防止出

3、现错误。Malloc只能分配堆内存,new 不仅能分配内存调用有参数的构造函数,对类的数据进行初始化。构造函数可以用( 初始化列表 )student():count(0);student ( char *name , Int age, int c) :count(c);对常量 count 进行初始化。引用也必须在初始化列表当中进行初始化。初始化列表的顺序是按照定义的顺序,并且是包含的小类先执行 , 它比构造函数还先执行。当类内有成员为指针的时候, 不能简单的复制, 要把堆内存分配 , 然后再把值拷过来,析构函数 ()为了避免内存泄露用到析构函数, 析构顺序与构造函数的顺序正好相反 !迭代器St

4、ring-str.reserve(20),只改变容量str.capacityString-str.resize(30),改变实际的字节数str.size,str.length,当然还有 str.capacity1. Str.append 连接,2. str.assign 拷贝,3. str.at ( 0)修改第一个字符,4. str.empty ()判断是空返回 1;5. pare() 比较字符串(相等返回 0)6. str.substr(0,5)截取字符串;7. str.swap(str2) 交换;8. str.find; 查找str.find_first_of;-str.find_firs

5、t_not_of;9. str.replace(0,5,”hello ”);10. str.insert();字符串插入string迭代器相当于指针返回一个对象的时候, 调用拷贝函数静态数据成员不管有多少个对象 , 静态数据成员只有一个内存 , 它会随着对象的改变而直接改变 ;( 可以用它来记录有多少个对象 )*1. 静态成员函数不能调用非静态成员函数, 但是可以调用静态成员函数( 因为静态成员函数是在编译的时候分配内存,一般函数是在运行的时候才分配内存). 静态只能访问静态的 !*2. 一般函数可以调用静态函数.嵌套类 ( 外部类内部类 )内部类不可以访问外部类的一般数据, 只能访问静态数据

6、,但是外部类可以访问内部类的任何类型数据( 这是由于内部类和外部类是两个类, 编译的时候先编译内部类再编译外部类的 ).局部类局部类里面不能有静态的数据成员和静态的成员函数;友元友元啊,在定义类里面给函数前面加上 friend 即可,可以将一个类定义为另一个类的友元类指向类中数据成员的指针,注意声明的时候要加类域,初始化也要注意,( int student:*p;P = &student:ageStu.*p = 10)例子如下:#include#includeusingnamespace std ;classstudentpublic :intage;student ()intfun( int

7、age)this - age = age;returnthis - age;intmain()studentstu;intstudent :*p;p = &student :age;stu.*p= 10;coutstu.*pendl;int( student :*pfun)(int );pfun = &student :fun;intresult= (stu.*pfun)(20);coutresultendl;继承父类的私有部分不能被继承,先按照继承的顺序执行调用构造函数,例如:#include#includeusingnamespace std ;classApublic :A( int )

8、cout A constructendl;classBpublic :B( int )cout B constructendl;classCpublic :C()coutC constructendl;classD: publicC, publicA, publicBpublic :B b;C c;A a;D( inti, intj, intk): A(i),B(j),a(i),b(j)cout D construct stuid .compare(stu.stuid )= 0)returntrue ;elsereturnfalse;If(stu1 = stu2)通过操作符重载可以直接拿两个对

9、象进行比较模板template classstudentpublic :T1 age;T2 name;student ()student ( T1 age, T2 name)this - age = age;this - name = name;voidshow();templatevoidstudent :show()cout age nameendl;intmain()student stu( 19, zhangsan );stu.show();容器for_each(vec.begin(),vec.end(),showint);插入 :vec.insert(vec.begin(), 9);

10、删除注意 :vec.pop_back();/ 删除最后一个/ vec.erase(vec.begin()+3,vec.end()-2);/ vec.erase(vec.end();/ 删除所有 vec.clear(); / 删除所有修改 :Vec.at(1) = 200;查找 :Find(vec.begin(),vec.end(),”xiaoqiao ” );booloperator ()( conststring& str)if (str.substr(return5, 3).compare( ing true ;) =0)elsereturnfalse ;其中 str.substr(5,3

11、).compare( “ing ”) 中 5 代表从第五个开始找, 3 代表找 3 个字符, ing 是要查找的字符。排序:sort(vec3.begin(),vec3.end(),cmpstu) ;统计字符个数:count(vec.begin(),vec.end(), hhhh ); 表示统计有几个“hhhh ”的个数!交换:Vec.swap (vec2 ) ;Vector , deque( 双端队列 ) , queue( 队列 ) , stack (堆),list;其中 queue 的 que.size()会自增,Lis.remove(“ mengde” );删除Lis.splice(li

12、s.end(),lis2);(拼接 -剪切lis2的数据连接到lis后面去)三种拼接方式如下:lis.splice(lis.end(),lis2);lis.splice(lis.begin(),lis2,+lis2.begin();lis.splice(lis.begin(),lis2,+lis2.begin(),lis2.end();去除重复值:Lis.unique();注意去出重复之前最好先排序lis.sort(),可以把重复的其中一个删除;倒序:lis.reverse();赋值:lis.assign(+lis2.begin(),-lis2.end();/ 赋值lis.assign(3,

13、fuck); /赋值两种方式都会覆盖掉原来的数据set :自动排序,不允许插入相同的数据;setint,less set2;按照由小到大的,默认也是这样的set int , greater set2;由大到小自动排序。查找:set set1;set1.insert(1);set1.insert(7);set1.insert(3);set1.insert(8);/ for_each(set1.begin(),set1.end(),showint);pair set : iterator , set :iteratorpr;/pr= set1.equal_range(8); -8,4/pr= se

14、t1.equal_range(4); -7, 7/pr= set1.equal_range(0); -1, 1pr=set1.equal_range(20);-4, 4cout*(pr. first) *(pr.second)endl;查找:set set1;set1.insert(1);set1.insert(4);set1.insert(7);set1.insert(11);set : iteratorit;/it =set1.lower_bound(15);it= set1.upper_bound( 15);cout*itendlmap插入 :map.insert(2,200);-其中

15、2 是键, 200 是值可以允许值相同但是不能允许键相同,否则插不进去,map m1;/typedefpair INT_pair ;m1.insert(INT_pair ( 1, 100);m1.insert(INT_pair ( 3, 300);m1.insert(INT_pair ( 4, 900);m1.insert(INT_pair ( 2, 200);pair map: iterator, bool pr;pr = m1.insert(INT_pair ( 4, 400);if (pr. second = true )cout insertOK (*(pr.first(*(pr.fi

16、rst).secondendl;).first elsecout insertfaild!endl;map删除 :/ m1.erase(+m1.begin();/ m1.erase(-m1.end();/ m1.erase(2);m1.erase(m1.begin(),m1.end();map查找修改:map: iteratorit= m1.find( 2);if (it!= m1.end()it;cout findand update first secondsecond= 999;elsecout faildendl;当然还可以直接用键查找cout 3 m1.at( 3)endl;cout

17、 m11: m11endl;vector vec;vec.push_back( 1);vec.push_back( 2);vec.push_back( 3);vec.push_back( 4);vec.push_back( 5);vec.push_back( 6);/random_shuffle(vec.begin(),vec.end();随机排序replace(vec.begin(),vec.end(),4, 999); 把 4 用 999 来替换reverse(vec.begin(),vec.end();倒置merge(vec.begin(),vec.end(),vec2.begin(),

18、vec2.end(),vec3.begin();把 vec 和vec2 的数据连接放在vec3 里面 (必须先用vec3.resize()为它分配空间 );for_each(vec.begin(),vec.end(),showint);通用算法都不能改变容器的容量。异常处理intmain()cout starttrymain endl;cout starttryendl;throw1;cout endstryendl;#if1catch ( int)cout intexceptionendl;#endifcout main over endl;文件:#include#includeusing namespace std ;intmain()/ofstream out(hello);创建文件/char*buffer = fuckyourself;把字符串写入到 buffer里面/outbuffer;写入文件/out.flush();刷入/out.close

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论