版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
千里之行,始于足下让知识带有温度。第第2页/共2页精品文档推荐C++重点难点汇总精华封装继承多态
1.封装,数据部分,classname
2.继承,在实现程序时,可以像生活中儿子继承父母遗产一
样,子类将父类中的属性(类中的数据成员)和行为(类中的成员函数)继承,从而实现父类全部内容为子类所用的功能(代码重用)
3.多态,在实现程序时,可以将父类的行为(类中的成员函
数)再次定义从而实现新的行为(重载,重写),使程序的执行结果多样化
其实类的话和结构体的字节大小算法不一样,不管它的大小Public(本类,子类,其他类)》protected(本类,子类)》private(本类)。
Private私有的只能在一个地方(本类)拜访。
类的初始化
1.在类里面,必需创建对象之后才干初始化,不能在类里面
直接初始化。普通数据类型不能在类外面初始化,但是静态的(static)类型可以再类的外面举行初始化--(有且惟独static在类外可以初始化,由于静态的是在全局数据区存放的,在编译的时候就给它分配内存了)。
2.类里面的数据可以是随意的,但是不能有本类的对象(因
为不知道怎么分配内存),本类的指针是可以的,
3.静态函数当中不能浮现this,this是在运行的时候才有。构造函数
1.构造函数的作用就是对类里面的数据举行初始化
2.构造函数是自动调用
3.构造函数不能写返回值,
4.最好写一个自己的默认构造函数以防止浮现错误。
Malloc只能分配堆内存,new不仅能分配内存调用有参数的构造函数,对类的数据举行初始化。
构造函数可以用(初始化列表)
student():count(0);
student(char*name,Intage,intc):count(c);
对常量count举行初始化。
引用也必需在初始化列表当中举行初始化。
初始化列表的挨次是根据定义的挨次,并且是包含的小类先执行,它比构造函数还先执行。
当类内有成员为指针的时候,不能容易的复制,要把堆内存分配,然后再把值拷过来,
析构函数()
为了避开内存泄露用到析构函数,析构挨次与构造函数的挨次正巧相反!
迭代器
Stringstr.reserve(20),只转变容量str.capacity
Stringstr.resize(30),转变实际的字节数str.size,str.length,固然还有str.capacity
1.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_first_not_of;
9.str.replace(0,5,”hello”);
10.str.insert();字符串插入
string迭代器
相当于指针
返回一个对象的时候,调用拷贝函数
静态数据成员
不管有多少个对象,静态数据成员惟独一个内存,它会随着对象的转变而直接转变;(可以用它来记录有多少个对象)
**1.静态成员函数不能调用非静态成员函数,但是可以调用静态成员函数(由于静态成员函数是在编译的时候分配内存,普通函数是在运行的时候才分配内存).静态只能拜访静态
的!
**2.普通函数可以调用静态函数.
嵌套类(外部类内部类)
内部类不行以拜访外部类的普通数据,只能拜访静态数据,
但是外部类可以拜访内部类的任何类型数据(这是因为内部类和外部类是两个类,编译的时候先编译内部类再编译外部类的).
局部类
局部类里面不能有静态的数据成员和静态的成员函数;
友元
友元啊,在定义类里面给函数前面加上friend即可,
可以将一个类定义为另一个类的友元类……
指向类中数据成员的指针,注重声明的时候要加类域,初始化也要注重,(intstudent::*p;
P=
classstudent
{
public:
intage;
student(){}
intfun(intage)
{
this->age=age;
returnthis->age;
}
};
intmain()
{
studentstu;
intstudent::*p;
p=
stu.*p=10;
cout
#include
usingnamespacestd;
classA
{
public:
A(int){cout
classstudent
{
public:
T1age;
T2name;
student(){}
student(T1age,T2name)
{
this->age=age;
this->name=name;
}
voidshow();
};
template
voidstudent::show()
{
coutagenamestu(19,"zhangsan");
stu.show();
}
容器
for_each(vec.begin(),vec.end(),showint);
插入:
vec.insert(vec.begin(),9);
删除注重:
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
else
returnfalse;
}
其中str.substr(5,3).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(lis.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,"fuck");//赋值两种方式都会笼罩掉本来的数据
set:自动排序,不允许插入相同的数据;
set::iterator,set::iteratorit;
//it=set1.lower_bound(15);
it=set1.upper_bound(15);
coutm1;//
typedefpair::iterator,bool>pr;
pr=m1.insert(INT_pair(4,400));
if(pr.second==true)
cout::iteratorit;
it=m1.find(2);
if(it!=m1.end())
{
coutfirstsecondsecond=999;
}
else
coutvec;
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(),vec2.end(),vec3.begin());把vec和vec2的数据衔接放在vec3里面(必需先用vec3.resize()为它分配空间);
for_each(vec.begin(),vec.end(),showint);
通用算法都不能转变容器的容量。
异样处理
intmain()
{
cout
#include
usingnamespacestd;
intmain()
{
//ofstreamout("hello");创建文件
//char*buffer="fuckyourself";把字符串写入到buffer里面//out<<buffer;写入文件
//out.flush();刷入
//out.close();关闭
ifstreamin("hello");
charbuffer[128];
#if1
while(in.getline(buffer,sizeof(buffer)-1)!=NULL)
cout<<buffer<<endl;
#endif
#if0
stringstr;
while(getline(in,str)!=NUL
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年农业运输项目资金筹措计划书代可行性研究报告
- 小升初常考易错题-现代文阅读检测卷(二)-2022-2023学年部编版六年级语文下册
- 2023年氢氧化亚镍资金需求报告
- 销售经验交流发言稿范文(35篇)
- 工作入职培训心得体会(35篇)
- 四川省泸州市龙马潭区五校联考2024-2025学年八年级上学期期中地理试题(含答案)
- 电脑速记培训合作合同书
- 公司和个人之间的租车服务协议书范文
- 智能节电技术服务委托协议
- 2024版合作协议书格式
- GB/T 42455.2-2024智慧城市建筑及居住区第2部分:智慧社区评价
- 开盘八法概述
- 佛山佛罗伦萨小镇市调报告课堂PPT
- 班组建设实施细则
- 江苏省电力公司员工奖惩办法(试行)
- 毕业设计(论文)汽车照明系统常见故障诊断与排除
- 人工智能技术在电气自动化控制中的应用分析
- 中国建设银行网上银行电子回单
- (完整版)百万英镑课文
- 国内外中小学家校合作研究综述3
- 医疗技术临床应用及新技术新项目管理制度考核试题及答案
评论
0/150
提交评论