C++重点难点汇总精华

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

封装继承多态

1.封装,数据部分,class name

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,Int age,int c):count(c);

对常量count进行初始化。

引用也必须在初始化列表当中进行初始化。

初始化列表的顺序是按照定义的顺序,并且是包含的小类先执行,它比构造函数还先执行。

当类内有成员为指针的时候,不能简单的复制,要把堆内存分配,然后再把值拷过来,

析构函数()

为了避免内存泄露用到析构函数,析构顺序与构造函数的顺序正好相反!

迭代器

String-----str.reserve(20),只改变容量str.capacity

String-----str.resize(30),改变实际的字节数str.size,str.length,当然还有str.capacity

1.Str.append连接,

2.str.assign拷贝,

3.str.at(0)修改第一个字符,

4.str.empty()判断是空返回1;

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即可,

可以将一个类定义为另一个类的友元类……

指向类中数据成员的指针,注意声明的时候要加类域,初始化也要注意,(int student::*p;

P = &student::age

Stu.*p = 10)

例子如下:

#include

#include

using namespace std;

class student

{

public:

int age;

student(){}

int fun(int age)

{

this->age=age;

return this->age;

}

};

int main()

{

student stu;

int student::*p;

p=&student::age;

stu.*p=10;

cout<

int(student::*pfun)(int);

pfun=&student::fun;

int result=(stu.*pfun)(20);

cout<

}

继承

父类的私有部分不能被继承,

先按照继承的顺序执行调用构造函数,

例如:

#include

#include

using namespace std;

class A

{

public:

A(int){cout<<"A construct"<

};

class B

{

public:

相关文档
最新文档