【C++程序设计】-类和对象
来源:互联网 发布:深圳中原大数据 编辑:程序博客网 时间:2024/06/15 00:47
1.类及其实例化
对象就是一个物体的实例,将一组对象的共同特征抽象出来,形成了类的概念
2.定义类
类先声明后使用
类是具有唯一标识符的实体
类中声明的任何成员不能使用extern、auto和register关键字进行修饰
类中声明的变量属于该类
某些情况下,变量可以被该类的不同实例所共享
类包含了数据成员和成员函数
不能在类声明中对数据成员使用表达式进行初始化(不能在类体内对数据成员进行赋值)
类成员的访问权限有:private(私有的)、public(公有的)和protected(保护的),对应的成员分别叫做:私有成员、公有成员、保护成员
如果没有使用关键字,类中所有成员默认声明为private权限
定义成员函数
返回类型 类名 :: 成员函数名(参数列表)例如:void Point :: Setxy(int a,int b)
在声明类的同时,在类体内给出成员函数的定义,则默认为内联函数
3.使用类的对象
对象和引用都使用运算符“.”访问对象的成员,指针则使用“—>”运算符;例如:A.Setxy(25,25); p—>Display();
类的成员函数可以直接使用自己类的私有成员
类外面的函数不能直接访问类的私有成员
类外面的函数只能通过类的对象使用该类的公有成员函数
4.构造函数
任何类必定有构造函数
构造函数能够被重载、不能被继承、名字与类名完全相同
一旦程序定义了自己的构造函数,系统就不再提供默认构造函数
类的构造函数可以在类体内(内联函数)声明时定义,也可以在类体外定义
构造函数是在产生对象的同时初始化对象的
5.构造函数和运算符new
运算符new用于建立生存期可控的对象,new返回这个对象的指针
6.复制构造函数
使用已有的对象来建立一个新对象
复制构造函数的原型如:A::A(A&)
通常拷贝函数的参数是:对象的引用
推荐函数原型为:Point(const Point&)
7.析构函数
构造型函数:构造函数、复制构造函数、析构函数
调用析构函数是由编译器来完成
一个类只能定义一个析构函数且不能指明参数
析构函数在对象的生存期结束时被自动调用
全局对象和静态对象的析构函数在程序运行结束之前调用
8.析构函数和运算符delete
当使用运算符delete删除一个动态对象时,它首先为这个动态对象调用析构函数,然后再释放这个对象占用的内存
Point * ptr = new Point[2];//new Point[2]首先分配2个Point类的对象所需的内存,然后分别为这2个对象调用一次构造函数。当使用delete释放动态对象数组时,必须告诉这个动态对象数组有几个元素对象,C++使用“[]”来实现,语句为:delete []ptr;(以上述例子来看,new了两个对象,调用了一次构造函数,但是释放的时候,按后建先析构的原则析构对象
在定义类时,没有定义析构函数,编译器为它产生一个函数体为空的默认析构函数
9.调用复制构造函数的3种情况
一个类的对象去初始化另一个对象的时候
函数的形参是类的对象,调用的时候,进行形参和实参的结合时,需要调用复制构造函数
如果函数的返回值是对象,当函数调用完成返回时,调用复制构造函数
函数参数使用对象的引用不产生副本
10.this指针
使用this指针,保证了每个对象可以拥有自己的数据成员,但处理这些数据成员的代码可以被所有的对象共享
11.对象的性质
同一个类的对象之间可以相互复制
可使用对象数组
可使用指向对象的指针
对象可以用作函数参数
对象作为函数参数时,可以使用对象、对象引用、对象指针
一个对象可以用作另一个类的成员
12.类的性质
类本身的成员函数可以使用类的所有成员
类的对象只能访问公有成员函数
其他函数不能使用类的私有成员,也不能使用类的公有成员函数,它们只能通过类的对象使用类的公有成员函数
虽然一个类可以包含另外一个类的对象,但这个类也只能通过被包含的对象使用那个类的成员函数,通过成员函数使用数据成员
类也可以为空类;例如:class Empty{}
类的花括号形成了类的作用域
类中个数据成员的生存期由对象的生存期决定
struct的默认控制权限是public
13.对象的标记图
只使用对象名;对象名:类名;:类名
14.实例连接
实例连接反映对象之间的静态关系,实例连接有:一对一、一对多和多对多
消息连接描述对象之间的动态关系,用箭头的实线表示,从消息的发送者到消息的接收者
15.对象、类和消息
对象的属性是描述对象的数据成员
对象的属性的集合又称为对象的状态
16.对象的特征
有一个状态,由其相关联的属性值集合所表征
有唯一标识名,可以区别于其他对象
有一组操作方法,每个操作决定对象的一种行为
对象的状态只能被自己的行为所改变
对象的操作包括自身操作和施加于其他对象的操作
对象之间以消息传递的方式进行通信
一个对象的成员仍可以是一个对象
17.编译指令
嵌入指令:#include
宏定义:#define
条件编辑指令:#if、#else、#elif和#endif
define不是指令,而是一个预处理操作符,用于判定一个标识符是否已经被#define定义
- Objective-C程序设计第三章:类,对象和方法
- 【C++程序设计】-类和对象
- Java面向对象程序设计,类和对象
- C 面向对象程序设计
- C++(面向对象程序设计)
- C++primer学习:面象对象程序设计(1):定义基类和派生类
- C02-程序设计基础提高班(C++)第9周上机任务-类和对象
- C02-程序设计基础提高班(C++)第10周上机任务-类和对象之二
- C++primer学习:面象对象程序设计(4):继承类中的作用域和拷贝控制
- 理工大学ACM平台题答案关于C语言 1145 面向对象程序设计上机练习六(类和对象)
- [学习笔记—Objective-C]《Objective-C 程序设计 第6版》第三章 类,对象和方法
- 面向对象程序设计--C++/Java
- 面向对象程序设计--C++/Java
- Objective-C:面向对象程序设计
- 六、java的面向对象程序设计(类和对象)
- 面向对象程序设计上机练习六(类和对象)
- 面向对象程序设计上机练习七(类和对象)
- 面向对象程序设计上机练习七(类和对象)
- 160
- 深入理解java虚拟机-垃圾回收机制(1)
- Linux基本命令以及Linux远程连接工具的使用
- 使用Qt界面在局域网下做ROS话题发布
- ArrayList、LinkedList、HashSet以及HashMap
- 【C++程序设计】-类和对象
- JSTL
- 数据结构:字典Map
- 详解机器视觉照明重点内容
- py2和py3的区别
- 【C++程序设计】-特殊函数和成员
- Android 杀不死的进程
- equals()方法的重写
- Doctype作用?严格模式与混杂模式如何区分?它们有何意义?