- 1、本文档共46页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3章 怎样用类和对象
第3章 怎样使用类和对象++的重点!
第2章我们介绍了关于类的一些基本内容,对于类对象的数据成员的初始化我们始终是通过建立成员函数来实现的。而且一般都是用赋值语句给数据成员赋值,或通过cin来为数据成员从键盘输入值来实现。然后手工调用该函数对数据成员进行赋值的。
//这是一个由cin的输入或用赋值语句来为数据成员赋值的程序
#includeiostream
using namespace std;
class Point
{ int x, y;
public:
void input(){cinxy;}
void set(int x,int y){Point::x=x;Point::y=y;}
void print(){ cout(x, y)\n; }
};//===============================
int main()
{ Point a,b;
a.input();
b.set(4,5);
a.print();
b.print();
}//================================
在建立一个对象时如果不初始化是没有意义的,应该要有确定的值,++中对于类来说有没有更方便的方式能够在对象创建的时候就自动初始化数据成员呢?答案是肯定的。关于C++类成员的初始化,有专门的构造函数来进行自动操作而无需要手工调用。
3.1 构造函数
3.1.1 对象的初始化
对象和变量一样,不赋初值是没有意义的。
根据变量定义,全局变量和静态变量在定义(分配空间)时,0,局部变量在定义时分配内存空间内容为不确定的数。对象定义时,不确定的数值的情况#includeiostream
using namespace std;
//-------------------------------------
class Point
{ int x, y;
public:
void set(int a, int b)
{ x=a, y=b;
}//------------------------------------
void print()
{ cout(x, y)\n; }
};//===================================
Point t; //全局对象
int main()
{ Point s1; //局部对象
static Point s2; //静态对象
s1.print();
s2.print();
t.print();
}//====================================
//运行结果如下:
(-858993460, -858993460)
(0, 0)
(0, 0)
从运行结果可以知道,末设置初始时,全局对象、静态对象值为0,局部对象值为不确定例如桌子,桌子就应有长、宽、高和重量。因此,在桌子对象建立时,赋予一组值给该桌子对象。class Point
{ int x=10, y=20; //这是不允许的
public:
void set(){cinxy;}
void print()const{ cout(x, y)\n; }
};//===============================
如果一个类中所有的成员都是公有的,则与结构体一样,#includeiostream
using namespace std;
class Point
{public:
int x, y;
};
int main()
{ Point p={1,1};
cout(p.x, p.y)\n;
return 0;
};//===============================
因为对象中的数据成员一般都是私有的,不能随意改动,如果改成公有的破坏了封装性。
所以,在C++中,建立和初始化对象的过程专门由该类的构造函数来完成。这个构造函数很特殊,只要对象建立,它马上被调用,给对象分配空间和初始化。如果一个类没有专门定义构造函数, 那么C++就仅仅创建对象而不做任何初始化。C++规定与类同名的成员函数是构造函数,在该类的对象创建时,自动被调用。class Desk
{ int weight, height,width,length;
public:
Desk() //构造函数
{ weight=10; height=5;
width=4; length=4;
}
};
在类中定义的与类名相同的成员函数,并且没有任何返回类型的Desk()就是构造函数
您可能关注的文档
- 第2章最优化问数学基础.doc
- 第2章练习题1进程管理).doc
- 第2章自然环境的物质运动和能量交换(复习).doc
- 第2节 细胞多样性和统一性修改稿.doc
- 第2节 二力平教案.doc
- 第2节 生活中透镜.doc
- 第2节 细胞的化教学设计.doc
- 第2讲 拉第电磁感应定律 自感.doc
- 第2讲 拉杆的内力和应力.doc
- 第2讲 热力第一定律.doc
- 2025湖北咸宁市嘉鱼县鱼岳镇招聘社区工作者38人笔试备考试题及答案解析.docx
- 2025四川雅安市雨城区公益性岗位招聘3人(合江村、九龙村、顶峰村保洁员)笔试备考试题及答案解析.docx
- 2025徽商银行宣城分行社会招聘笔试备考试题及答案解析.docx
- 2025湖南益阳农商银行招聘综合柜员岗9人笔试备考试题及答案解析.docx
- 2025黑龙江齐齐哈尔市昂昂溪区人民法院聘用制人员招录笔试备考试题及答案解析.docx
- 2025湖北武汉市中南财经政法大学教师招录笔试备考试题及答案解析.docx
- 2025四川宜宾市公信商贸有限责任公司招聘科室助理岗位人员17人笔试备考试题及答案解析.docx
- 2025湖北省招募选派“三支一扶”高校毕业生2000人笔试备考试题及答案解析(1).docx
- 2025四川绵阳市中科美菱低温科技股份有限公司招聘自动化冰箱产品经理等岗位2人笔试备考试题及答案解析.docx
- 2025四川农业大学处科级领导干部竞聘14人笔试备考试题及答案解析.docx
最近下载
- 转速耦合混合动力汽车行星减速装置可靠性优化设计与分析.docx VIP
- 2025四川农商银行社会招聘800人笔试备考试题及答案解析.docx
- 2024年江西省鹰潭信江新区公开招聘村(社区)工作者12人公开引进高层次人才和急需紧缺人才笔试参考题库(共500题)答案详解版.docx VIP
- 工程质量创优策划书(中建八局).docx
- YN803D系列多功能数字仪表.doc.docx VIP
- 分布式光伏发电项目报告(28页).pptx
- 工程质量管理考核制度.doc
- 直播电商运营(初级)营销师巨量认证考试题库(附答案).docx
- 2022年研究生类同等学力申请硕士学位教育学学科综合水平考试模拟题10.pdf VIP
- 学校围墙改造项目工程施工组织设计.docx VIP
文档评论(0)