类和对象知识点回顾基础篇.docx
- 文档编号:27538930
- 上传时间:2023-07-02
- 格式:DOCX
- 页数:10
- 大小:17.14KB
类和对象知识点回顾基础篇.docx
《类和对象知识点回顾基础篇.docx》由会员分享,可在线阅读,更多相关《类和对象知识点回顾基础篇.docx(10页珍藏版)》请在冰豆网上搜索。
类和对象知识点回顾基础篇
本文来自CSDN博客
1.描述一下对象和类之间的关系?
:
类是对象的模板,类定义了对象具有什么样的数据和函数。
对象是类的一个实例,可以创建一个类的多个对象。
2.如何声明一个类,如何声明并创建一个对象?
声明类:
classCircle
{
}
声明对象:
Circlecircle1;无实参函数声明一个对象
Circ了circle(5);带实参函数声明一个对象
3.构造函数和一般函数的区别:
1)构造函数名字必须与类名相同
2)构造函数没有返回值类型--连void都没有
3)在创建对象时,构造函数被调用,其作用是初始化对象
4.如何使用无实参函数声明对象?
如何使用有实参函数声明对象?
无实参函数声明对象:
Circlecircle1;
带实参函数声明对象:
Circlecircle2(5);
5.声明一个对象后,可以对对象重新赋值么?
即使其引用另外一个对象么?
:
不可以。
对象名和数组名一样,一旦声明一个对象,他就表示一个特定的对象,不能对其重新赋值。
6.类的命名方法?
对象的命名方法?
自定义的类与函数库中的类有何区别?
:
类名第一个字母必须大写。
对象名全都是小写。
库中的类名都是小写形式,这就易于区分两种不同的类。
7.对象间的复制指的是什么?
:
与普通变量类似,也可以用=号进行对象之间的复制。
源对象的每个数据域会被复制到目的对象的数据域。
如:
circle1=clrcle2//会将circle2中的radius复制到circle2中的radius。
对象间的复制完毕后,两个对象依旧是两个不同的对象,但具有相同的数据域。
8.如果一个对象只使用一次,无需为对象命名,即匿名对象,声明匿名对象的方法是:
circle().getArea()//无实参函数声明的对象
circle(5.0).getArea()//有实参的函数声明的对象
9.类声明和实现分离的方法:
1)创建一个类声明的头文件。
classCircle()
{
public:
Circle();
Circle(double);
doublegetArea();
};
2)创建一个类实现的源文件。
(在类实现中,要用到二元作用域解析元素符)
#include"Circle.h"
Circle:
:
Circle()
{
radius=1;
}
Circle:
Circle(doublenewRadius)
{
radius =newRadius;
}
double Circle:
getArea()
{
returnradius*radius*3.14;
};
10.在类声明中,内联函数起着非常重要的作用。
那么如何声明一个内联函数?
:
方法1:
在类声明中,实现一个函数,则这个函数自动成为一个内联函数。
方法2:
在类实现中,指明函数是内联的,即函数头前面加上inline
11.在类中,内联函数适用于哪些函数?
:
内联函数适用于短函数,但长函数就不太合适。
12.对象一旦声明后,就无法修改,但是我们可以创建对象指针,则可以修改不同的指针。
如何创建一个对象指针?
:
Circlecircle1;//先创建一个对象
Circle*pcircle=&circle1;//再创建一个对象指针,并将对象地址赋予对象指针。
13.如何通过指针访问对象成员?
:
用箭头运算符->
声明一个对象指针后,即可利用指针访问对象成员,如:
Circlecircle1; Circle*pcircle =&circle;cout<<"面积是"< 14.如何在堆中创建动态对象? : Circle*pcircle1=new Circle();//利用无实参构造函数创建的对象 或者 Circle*pcircle2=new Circle(5.0);//利用带实参构造函数创建对象。 15.为什么要将数据域封装? 怎样进行数据域封装? 数据域封装是为了防止用户修改类的属性。 用private关键字,将数据域声明为私有的。 16.为了使私有的数据域可被访问,有什么解决办法? : 可定义一个get函数(获取器) 具体如下: doublegetRadius() { returnradius; } 17.为了使私有的数据域可被修改,有什么解决办法? : 定义一个set函数(设置器) 具体如下: voidsetRasius(doublenewRadius) { radius=newradius; } 18.数据域的作用范围? 我们知道全局变量的作用范围是所拥有函数都可以访问他,从他得声明位置开始一直到程序末尾结束。 局部变量的作用域是相应函数内部。 静态局部变量在程序中的存储空间是持久的,因此下次调用时候,仍可访问。 : 数据域被定义为变量形式,可被类中的=所有的构造函数和成员函数访问。 数据域在类中的声明顺序是可以任意的。 较好的声明方式是: 先声明公有成员,再声明私有成员。 19.数据域被屏蔽,指的的什么现象? : 若数据域与成员函数中声明的一个局部变量具有相同的名字,则数据域被屏蔽,因为局部变量的优先级更高。 所以,尽量不要在一个类中声明同名的变量,函数参数除外。 如: public: intx; Circle() { x=10; } voidp() { intx =20; cout<<"x="< } intmain() { Circlecircle1; circle.p(); return0;}; 结果是: 输出x=20; 20.为防止出现数据域被屏蔽,应怎样命名数据域和成员函数变量? : 为避免混淆,不要在一个类中多次声明同个变量.但,函数参数除外(函数参数可以和数据域同名) 21.this指针的用法 : this是一个指针,用于访问调用对象.如: this->radius=radius; 22.对象怎么作为函数参数传递? ? 传递方式有: 按值方式传递,按引用方式,和通过指针引用方式. 较好的方式是,按引用方式传递对象参数. 23.如何创建对象数组? Circlecirclearray[3]={Circle(3),Circle(4),Circle()};//数组初始化语句 24.什么叫类抽象? 什么叫类封装? 类抽象: 将类的实现和使用分开 类封装: 类的实现细节被封装起来,对用户是隐蔽的,叫类封装。 25.什么叫构造函数初始化列表? 其形式是什么? : 构造函数初始化列表,可用来初始化数据域。 形式: Circle: : Circle() : radius (1),area (2){其余的初始化} 等于 Circle: : Circle() { radius=1; area=2; } 26.什么情况下使用函数初始化列表? : 如果数据域是一个对象,且它没有无实参构造函数,那么这时候必须使用初始化列表。 即如果一个数据域是对象类型,无实参构造函数会被自动调用,以创建该数据域的对象,如果该类没有无实参构造函数,则编译器会报告一个错误。 例如: classTime { public: Time(inthour,intminute,intsecond) { //////////////// } private: inthour; intminute; intsecond; }; classAction { public: Action(inthour,intminute,intsecond) { ///// } private: Timetime;//Time中没有无实参构造函数,所以,在数据域声明时候,必须用构造函数初始化列表。 }; 改正如下: classAction { public: Action(inthour,intminute,intsecond) { : time(hour,minute,second) { } private: Timetime;//Time中没有无实参构造函数,所以,在数据域声明时候,必须用构造函数初始化列表。 }; 27.类中的对象数据域声明过程,与函数的对象声明过程有何区别? : 在函数中,声明一个对象时候,对象是被创建出来的。 在数据域中,声明和一个对象时候,对象并未创建。 如intmain() { Circlecircle//对象被创建 } 在类中 classCircle { public: Circle(); private: stringname;//name对象并未被创建 } 28.着重理解,数据域是对象: classAction { public: Action(inthour,intminute,intsecond) { : time(hour,minute,second) { } private: Timetime;//Time中没有无实参构造函数,所以,在数据域声明时候,必须用构造函数初始化列表。 };
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 对象 知识点 回顾 基础