>[info]# **类和对象的关系**
- 在C++中,类是用户自定义的数据类型,称为类类型,和基本数据类型一样,都是C++合法的数据类型.
- 广义上讲,对象是指一切可以被感知和触摸的客观实体.按程序设计的观点,对象则是变量概念的进一步推广和延伸.
- 在声明类类型后,用该类的类名去定义一个变量,则称这个变量为该类的一个对象.类是抽象的,不占用内存,而对象是具体的,占用存储空间.
- 类与对象的关系等价于基本数据类型与变量的关系.
>[info]# **类中的成员**
- 数据成员
- 成员函数
## **成员访问限定符**
**public**:类中成员被定义为public,则该成员可被任何函数访问
**protected**:类中成员被定义为protected,则该成员只能被该类中的函数和友元访问,还可以被该类继承得到的类访问。
**private**:类中成员被定义为private,则该成员只能被该类中的函数和友元访问
>[info]# **类的声明**
```
class 类名
{
public:
公用的数据和成员函数;
protected:
保护的数据和成员函数;
private:
私有的数据和成员函数;
};
```
## **例子**
```
#include <iostream> // 预处理命令
using namespace std;
class Student //声明一个类,类名为Student
{
private: //以下为类中的私有部分
int num; //私有变量num
int score; //私有变量score
public: //以下为类中的公用部分
void setdata( ) //定义公用函数setdata
{
cin>>num; //输入num的值
cin>>score; //输入score的值
}
void display( ) //定义公用函数display
{
cout<<”num=”<<num<<endl;//输出num
cout<<”score=”<<score<<endl;//输出score
}
} ; // 类的声明结束
```
>[info]# **定义对象**
## **先声明类型,然后再定义对象**
声明了类类型后,定义对象有两种形式:
1.class 类名 对象名
```
class Student stud1,stud2;
```
2.类名 对象名
```
Student stud1,stud2;
```
## **在声明类类型的同时定义对象**
```
class Student //声明类部分
{
public: //先声明公有部分
void display
{
cout<<"name:"<<name<<endl;
cout<<"num:"<<num<<endl;
cout<<"sex:"<<sex<<endl;
}
private: //后声明私有部分
int num;
char name[20];
char sex;
}stu1,stu2; //定义了两个Student类的对象
```
## **不出现类名,直接定义对象**
```
class //无类名
{
public: //声明以下部分为共有
|
|
|
private: //声明以下部分为私有
|
|
|
}stu1,stu2; //定义了两个无类名的对象
```
>[info]# **类和结构体的异同**
- C的结构可以把相关联的数据元素组成一个单独的统一体.
- C++的类既能包含数据成员,又能包含成员函数.
- C++中的结构也可以有成员函数,而C中不允许.
## **C++中类与结构的唯一区别:**
**类**(class)声明中,其成员默认情况下是private的.
**结构**(struct)声明中,其成员默认情况下是public的.
- 介绍
- 编程设计语言
- 第一章 对C++的初步认识
- 1.2 最简单的C++程序
- 1.3 C++对C的补充
- 1.3.1 return
- 1.3.2 输入输出流
- 1.3.3 putchar 和 getchar
- 1.3.4 用const定义常变量
- 1.3.5 函数原型声明
- 1.3.6 内置函数
- 1.3.7 函数重载
- 1.3.8 函数模板
- 1.3.9 有默认值的参数
- 1.3.10 作用域
- 1.3.11 const修饰指针
- 1.3.12 引用
- 1.3.13 生命期
- 1.3.14 变量
- 1.3.15 字符串变量
- 第二章 类与对象
- 2.2 类的声明和对象的定义
- 2.3 类的成员函数
- 第三章 关于类和对象的进一步讨论
- 3.1 构造函数
- 3.1.1 对象的初始化
- 3.1.2 构造函数
- 3.2 析构函数
- 3.3调用析构函数和构造函数的顺序
- 3.4 对象数组
- 3.5 对象指针
- 3.6 共享数据的保护
- 3.7 对象的建立与释放
- 3.8 对象的赋值与复制
- 3.9 静态成员
- 3.10 友元
- 3.11 类模板
- 第四章 运算符重载
- 数据类型转换
- 运算符重载
- 重载流插入运算符和流提取运算符
- 第五章 继承与派生
- 继承与派生
- 第六章 多态性与虚函数
- 多态性
- 虚函数
- 纯虚函数与抽象类