/* 第二章:类和对象的特征 */
// 制作人:easy
//制作时间:2017-3-7
//原创制作,盗版必究
/*********************************************欢迎进入C++学习课堂**********************************************************************
一.概述
1.类是一个抽象(表示一类事物的本质),而对象则是抽象的具体。
2.对象的两个要素: a.应具有属性(数据成员)
b.具有行为(成员函数)
3.对象可以根据外界给的信息(即调用成员函数)进行相应的操作。
4.C++程序的重要特点:“封装性”-> a.各对象互不干扰
b.封装信息对外隐蔽(又叫“信息屏蔽”)
5.继承与重用(C++两种重要机制): a.即在原有类的基础上增添新的特征,而形成的新的类叫“子类”或“派生类”
b.这种继承的机制又叫“软件重用”
6.多态性:基于继承机制,即相似但不相同的对象对外界同一信息做出不同的相应。
7.关于面向对象与基于对象:C++支持面向对象也支持基于对象,基于对象主要在于强调主要的操作是对对象的操作,而面向对象则是在基于对象的基础上添加了继承与重用机制。
8.面向过程的程序设计与基于对象的程序设计主要区别:
A.面向对象:数据公用(数据缺乏保护,数据交叉容易发生错误)
B.基于对象:数据分属于不同的对象(一组数据是为一组操作做准备,数据与操作相互结合,与外界分隔)
9.软件开发五步走:分析(用户)->设计->编程->测试->维护
**********************************以上这一部分内容可能让你感到枯燥,这主要是为了让你更好的了解C++,请仔细阅读以上部分,认真体会**************************************
二.类与对象
1.简述:a.类是对象的类型,对象是类的具体实例
b.类比类与结构体(见以下代码段,!请格外注意代码段后边的标注)
************************************************************************
struct student
{
int num;
char name[20];
char sex;
}
************************************************************************
class student //类头
{ //{...}是类体,包括数据成员和成员函数,体现了数据与操作封装在了一起
char name[20];
char sex;
void display();
}
*************************************************************************
@说明: a.类中的成员外界不能直接调用
b.成员函数为类与外界的接口
2.类的声明格式:
**************************************************************************
class 类名
{
private:私有数据成员及成员函数; //private与public叫做“成员访问限定符”
public:共有数据成员及成员函数;
};
***************************************************************************
3.类声明时注意: a.如果类体即没写private又没写public,则默认为public
b.同一成员访问限定符可以在类体内出现多次,但是为了程序的美观,每一种只写一次
c.C++为用户提供类库(了解即可)
4.定义对象(三种方法)
****************************************************************************
A.先声明类类型然后在定义对象,例如:
class student
{
private:
int num;
int age; //先声明类
public:
void display();
};
class student s1; //再定义对象
student s1; //这种定义方式省去class,与上面的完全相同
-----------------------------------------------------------------------------
B.在声明类时同时定义对象,例如:
class student
{
private:
int num;
int age;
public:
void display();
}s1; //在声明类时同时定义了对象s1
-----------------------------------------------------------------------------
C.不标示类名,直接定义(不推荐,因为在C++中一个类可能不止为一个程序服务,不标识类名可能导致别的程序无法编译)
class
{
int num;
int age;
void display();
}s1;
******************************************************************************
5.类与结构体的异同
结构体内如果不表明“成员访问限定符”(private、public),即认为是共有的(即public);
而类中如果不表明,则认为是私有的(private);
其他方面并无差别,但是推荐使用class来体现出C++的风格;
****************************************************下面进入下一板块,成员函数**********************************
三.类的成员函数
1.关于成员访问限定符的说明: a.private:成员函数;(此函数被视为工具函数)
b.public:成员函数;(此函数被视为对外接口)
2.成员函数的定义: a.类内定义
b.类外定义
下面来演示这两种定义方法:
*****************************************************************************
//类内定义display函数
class student
{
private:
int num;
int age;
public:
void display() //类内定义(关于类内定义,请仔细看下面的"inline内置成员函数")
{
cout<<num<<age<<endl;
}
};
*******************************************************************************
//类外定义成员函数
class student
{
private:
int num;
int age;
public:
void display(); //先做类内声明
};
void student::display() //再做类外定义("::"是作用域限定符,来说明display是student的类内成员函数)
{
cout<<num<<age<<endl;
}
*********************************************************************************
3.内置成员函数(inline成员函数)
关于内置成员函数,其实相当于在函数开头默认添加了一个inline;
使用内置函数的前提:a.函数规模要足够小 b.不可以出现for、switch等;
关于类外内联,一般不使用这种做法;
举例说明:
*********************************************************************************
class student
{
private:
int num;
public:
void display()
{
cout<<num<<endl;
}
};
*其实就相当于:
class student
{
private:
int num;
public:
inline void display()
{
cout<<num<<endl;
}
};
****************************************************************************************
4.(原理节)成员函数的存储方式---类代码的调用机制
不同对象的函数代码是相同的(即共用一段类代码),因此每个对象不同的是其数据成员不同(数据成员所占空间不同);
#具体请翻看课本p51,认真阅读,有助于理解。
5.对象成员的引用方式:a.对象名+成员运算符(如:s1.display())
b.指向对象的指针(如:p->display())
c.对象的引用(&)
具体的例子见下面的实例,在这里不做过多解释,请类比结构体的变量调用方式
***********************************原理介绍至此,下面通过实例来更好的理解第二章*******************************************************/
//用类来实现时间的输入与输出
#include<iostream>
using namespace std;
class Time //类的声明
{
private: //私有数据成员
int hour;
int minute;
int second;
public: //共有成员函数
void Set_Time();
void Show_Time();
};
void Time::Set_Time() //成员函数的类外定义
{
cin>>hour>>minute>>second;
}
void Time::Show_Time() //成员函数的类外定义
{
cout<<hour<<":"<<minute<<":"<<second<<endl;
}
int main()
{
Time t1; //定义对象
t1.Set_Time(); //调用成员函数
t1.Show_Time();
system("pause");
return 0;
}
第二章:类和对象的特征
最新推荐文章于 2022-12-29 20:45:01 发布