【C++程序设计】-类和对象
2017-10-21 14:20
155 查看
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定义
相关文章推荐
- 【C++】面向对象程序设计
- C++学习笔记【第三部分第十五章:面向对象程序设计】
- 面向对象程序设计--C++/Java
- 类与对象编程题1(C++程序设计第3周)
- 谭浩强C++程序设计第9章关于类和对象的进一步讨论
- 面向对象与C++程序设计-运算符重载学习笔记
- 类和对象 编程题#3(Coursera 程序设计与算法 专项课程3 C++程序设计 郭炜、刘家瑛;OpenJudge)
- 类与对象编程题2(C++程序设计第3周)
- 面对对象程序设计_task2_C++视频教程
- 【c++】面向对象程序设计之虚函数详解
- C++程序设计 - Week 3 类和对象进阶
- {key}面向对象程序设计-C++ polymorphism 【第十三次上课笔记】
- 面向对象与C++程序设计-类的继承与派生学习笔记
- C++ 15章 面向对象程序设计
- 类和对象-编程题#3(C++程序设计第3周)
- C++程序设计必知:常引用、常对象和对象的常成员
- C_PlusPlus学习笔记 - 3_类与对象 (C++语言程序设计【第三版】 郑莉等,清华大学出版社)
- 【自考】C++程序设计(一 )对象、类、函数
- C++程序设计--对象分册(第5章)
- 面向对象程序设计-C++ Default constructor & Copy constructor& Destructor & Operator Overloading【第九次上课笔记】