-
类 Class
1. 定义:
- 与结构体的区别:结构体类型(struct)定义的成员都是数据变量,如果把struct扩充为可以定义这些数据的行为,就是类(class);
- 行为:就是可以处理类中数据的函数。故一个类主要包含数据成员(data member)和函数成员(function member );
- 封装:这种将数据和函数放在一起的操作就成为封装(Encapsu-lation)。
2. 类的格式
#include <iostream>
using namespace std;
// 类
class person{
private: // 私有成员:数据成员
int score1,score2;
public: // 公有成员:函数成员
int sum(int a,int b)
{score1=a;score2=b;return a+b;} // 用法二,成员函数的定义,方法一:内部:显式定义
int gets1();
}student1; // 用法一,对象的定义,方法一:直接写在类定义之后
// 成员函数
int person::gets1()
{return score1;} // 用法二,成员函数的定义,方法二:外部:显式定义
int main()
{
int s,i;
s=student1.sum(7,8);
i=student1.gets1();
cout << "s:" << s << " i:" << i << endl; // 15; 7
person student2; // 用法一,对象的定义,方法二:以类名称person定义
s=student2.sum(8,9);
i=student2.gets1();
cout << "s:" << s << " i:" << i << endl; // 17; 8
person *student3=new person; // 用法一,对象的定义,方法三:定义的是指向对象的指针
s=student3->sum(1,2); // 若定义的是指向对象的指针(Object Pointer)则访问对象的成员时,不能用“.”操作符,而应使用“—〉”操作符 ;
i=student3->gets1();
cout << "s:" << s << " i:" << i << endl;// 3; 1
return 0;
}
3. 定义类的对象:(与结构体类似)
- 方法一:直接写在类定义之后;
- 方法二:以类名称Student来定义;
注:C++把类的变量称为类的对象,对象也称为类的实例。
若定义的是指向对象的指针(Object Pointer)则访问对象的成员时,不能用“.”操作符,而应使用“—〉”操作符 ;
4. 成员函数的用法:
- 结构:
返回值类型 所属类名称::函数名称
{
[函数主体];
}
例:
int person::gets1()
{return score1;} // 显式定义
- 隐式定义:直接写到类的内部
// 类
class person{
private:
int score1,score2;
public:
int sum(int a,int b) // 内部,隐式定义
{score1=a;score2=b;return a+b;}
int gets1()
{return score1;}
};
- 显式定义:直接写到类的外部
// 外部:显式定义
int person::gets1()
{return score1;}
// 类
class person{
private:
int score1,score2;
public:
int sum(int a,int b);
{score1=a;score2=b;return a+b;}
int gets1();
};
- 区别:成员函数的写法和一般函数的写法类似,只是在函数名称前加上类名称和双冒号(::)[作用域运算符]而已。
5. 代码
#include <iostream>
using namespace std;
// 类
class person{
private: // 私有成员:数据成员
int score1,score2;
public: // 公有成员:函数成员
int sum(int a,int b)
{score1=a;score2=b;return a+b;} // 用法二,成员函数的定义,方法一:内部:显式定义
int gets1();
}student1; // 用法一,对象的定义,方法一:直接写在类定义之后
// 成员函数
int person::gets1()
{return score1;} // 用法二,成员函数的定义,方法二:外部:显式定义
int main()
{
int s,i;
s=student1.sum(7,8);
i=student1.gets1();
cout << "s:" << s << " i:" << i << endl; // 15; 7
person student2; // 用法一,对象的定义,方法二:以类名称person定义
s=student2.sum(8,9);
i=student2.gets1();
cout << "s:" << s << " i:" << i << endl; // 17; 8
person *student3=new person; // 用法一,对象的定义,方法三:定义的是指向对象的指针
s=student3->sum(1,2); // 若定义的是指向对象的指针(Object Pointer)则访问对象的成员时,不能用“.”操作符,而应使用“—〉”操作符 ;
i=student3->gets1();
cout << "s:" << s << " i:" << i << endl;// 3; 1
person mid,*student4;
student4 = ∣ // 用法一,对象的定义,方法四:类似方法三
s=student4->sum(3,4);
i=student4->gets1();
cout << "s:" << s << " i:" << i << endl; // 7; 3
return 0;
}