没有合适的资源?快使用搜索试试~ 我知道了~
类和对象的基础知识:有代码实现。 涉及: 构造函数 拷贝构造函数 深拷贝 浅拷贝 列表从初始化 explict new和delete malloc,calloc,realloc的比较
资源详情
资源评论
资源推荐
知识点1【类的空间大小】
知识点2【在类内声明类外定义成员函数】
知识点3【类的定义在头文件成员函数是在cpp文件中实现】(重要)
知识点4【构造和析构函数的概述】
知识点5【构造和析构函数定义】(重要)
构造函数语法:
析构函数语法:
知识点6【构造函数的分类以及调用】
1、构造函数分类:
按参数类型:分为无参构造函数和有参构造函数
按类型分类:普通构造函数和拷贝构造函数(复制构造函数)
2、构造函数的调用
注意:在同一作用域构造和析构的顺序相反
3、拷贝构造函数(系统提供一个拷贝构造函数赋值操作)
4、拷贝构造函数的注意事项:
1、不能调用拷贝构造函数去初始化匿名对象,也就是说以下代码不正确
2、对象作为函数的参数如果实参与形参都是普通对象那么就会调用拷贝构造
3、函数返回局部对象在qt中会被优化从而调用不了拷贝构造
知识点7【构造函数的调用规则】(重要)
系统会对任何一个类提供3个函数成员函数:
1、如果用户提供了有参构造将屏蔽系统的默认构造函数。
2、如果用户提供了有参构造不会屏蔽系统的默认拷贝构造函数。
3、如果用户提供了拷贝构造函数将屏蔽系统的默认构造函数、默认拷贝构造函数。
总结:
知识点8【深拷贝与浅拷贝】
知识点9【初始化列表】
注意:初始化成员列表(参数列表)只能在构造函数使用
知识点10【类的对象作为另一个类的成员】
知识点11【explicit关键字】
知识点12【new和delete】从堆区申请空间
1、和malloccallocrealloc比较
1.1、malloc返回一个void指针,c++不允许将void赋值给其他任何指针,必须强转。
1.2、malloc可能申请内存失败,所以必须判断返回值来确保内存分配成功。
1.3、malloc不会调用构造函数。free不会调用析构函数(重要的)
知识点1【类的空间大小】
1 usingnamespacestd;
2 classData
3 {
4 private:
5 //成员数据占类的空间大小
6 intnum;//4B
7 public:
8
9 //成员函数不占类的空间大小
10 voidsetNum(intdata)
11 {
12 num=data;
13 }
14 intgetNum(void)
15 {
16 returnnum;
17 }
18 };
19 voidtest01()
20 {
21 printf("%d\n",sizeof(Data));//4B
22 }
知识点2【在类内声明类外定义成员函数】
1 #include<iostream>
2
3 usingnamespacestd;
4 classData
5 {
6 private:
7 //成员数据占类的空间大小
8 intnum;//4B
9 public:
10
11 //成员函数在类内声明类外定义
12 voidsetNum(intdata);
13 intgetNum(void);
14 };
15
16 //Data类的成员函数
17 voidData::setNum(intdata)
18 {
19 num=data;
20 }
21
22 intData::getNum()
23 {
24 returnnum;
25 }
26
27 voidtest01()
28 {
29 printf("%d\n",sizeof(Data));//4B
30
31 Dataob;
32 ob.setNum(100);
33 cout<<"num="<<ob.getNum()<<endl;
34 }
35 intmain(intargc,char*argv[])
36 {
37 test01();
38 return0;
39 }
40
知识点3【类的定义在头文件成员函数是在cpp文
件中实现】(重要)
data.h
1 #ifndefDATA_H
2 #defineDATA_H
3 classData
4 {
5 private:
6 intnum;
7 public:
8 //设置num
9 voidsetNum(intn);
10 intgetNum(void);
11 };
12
13 #endif//DATA_H
14
data.cpp
1 #include"data.h"
2 voidData::setNum(intn)
3 {
4 num=n;
5 }
6 intData::getNum(void)
7 {
8 returnnum;
9 }
10
main.cpp
1 #include<iostream>
2 #include"data.h"
剩余20页未读,继续阅读
玖玖玖_violet
- 粉丝: 300
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- #P0015. 全排列 超级简单
- pta题库答案c语言之排序4统计工龄.zip
- pta题库答案c语言之树结构7堆中的路径.zip
- pta题库答案c语言之树结构3TreeTraversalsAgain.zip
- pta题库答案c语言之树结构2ListLeaves.zip
- pta题库答案c语言之树结构1树的同构.zip
- 基于C++实现民航飞行与地图简易管理系统可执行程序+说明+详细注释.zip
- pta题库答案c语言之复杂度1最大子列和问题.zip
- 三维装箱问题(Three-Dimensional Bin Packing Problem,3D-BPP)是一个经典的组合优化问题
- 以下是一些关于Linux线程同步的基本概念和方法.txt
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0