1.
类(Class)是面向对象程序设计(OOP)实现信息封装的基础。类是用户定义类型,也称为类类型,每个类包含数据说明和一组操作数据或传递消息的函数。类的实例称为对象。
面向对象编程的程序基本单位是类,类是数据和操作数据的函数的封装,类的对象使用自己的方法完成对数据的操作,类可以隐藏数据和操作细节,对象通过类接口与外部通信。
类中定义成员函数:
2.
class ,struct,union都可以定义一个类:
class 缺省说明时,其成员被认为是私有的
struct 若不特别指出,其所有成员都是公有的
union 其所有成员都是公有的,且不能更改
成员的性质由关键字public、protected、private 决定
public 公有公有段的成员是提供给外部的接口
protected 保护 保护段成员在该类和它的派生类中可见
private 私有私有段成员仅在类中可见
各段中既可以包含数据成员,也可以包含成员函数
类说明的一般形式为:
class 类名
{ public:
公有段数据成员和成员函数 ;
protected:
保护段数据成员和成员函数 ;
private:
私有数据成员和成员函数 ;
} ;
<3>类是一个程序包。可以只有数据成员或只有成员函数,或者为空。(空的类占1个字节)
类(Class)是面向对象程序设计(OOP)实现信息封装的基础。类是用户定义类型,也称为类类型,每个类包含数据说明和一组操作数据或传递消息的函数。类的实例称为对象。
面向对象编程的程序基本单位是类,类是数据和操作数据的函数的封装,类的对象使用自己的方法完成对数据的操作,类可以隐藏数据和操作细节,对象通过类接口与外部通信。
类中定义成员函数:
class Tdate
{ public:
void Set(int m, int d, int y ) { month = m ; day = d ; year = y ; }
int IsLeapYear()
{ return ( year%4 == 0 && year%100 != 0 )||( year%400 == 0); }
void Print() { cout << year << "." << month << "." << day << endl ; }
private:
int month; int day; int year;
};
类外定义成员函数:void Tdate :: Set(int m, int d, int y ) { month = m ; day = d ; year = y ; }
int Tdate :: IsLeapYear() { return ( year%4 == 0 && year%100 != 0 )||( year%400 == 0); }
void Tdate :: Print() { cout <<year<<"."<<month<<"."<<day<<endl ; }
2.
class ,struct,union都可以定义一个类:
class 缺省说明时,其成员被认为是私有的
struct 若不特别指出,其所有成员都是公有的
union 其所有成员都是公有的,且不能更改
成员的性质由关键字public、protected、private 决定
public 公有公有段的成员是提供给外部的接口
protected 保护 保护段成员在该类和它的派生类中可见
private 私有私有段成员仅在类中可见
各段中既可以包含数据成员,也可以包含成员函数
类说明的一般形式为:
class 类名
{ public:
公有段数据成员和成员函数 ;
protected:
保护段数据成员和成员函数 ;
private:
私有数据成员和成员函数 ;
} ;
注:
<1>允许已定义类名出现在类的说明中,但不能出现无穷递归结构
<2>类可以无名,用来直接声明对象<3>类是一个程序包。可以只有数据成员或只有成员函数,或者为空。(空的类占1个字节)
3.
访问对象成员
公有成员是提供给外部的接口,类外用“ . ” 和 “ -> ” 运算符访问对象成员//例6-4 用指针访问对象成员
#include<iostream>
using namespace std ;
class Tclass
{ public :
int x, y ;
void print() { cout << x << "," << y << endl ; } ;
} ;
int add( Tclass * ptf ) { return ( ptf->x + ptf->y ) ; }
int main()
{ Tclass test, * pt = new(Tclass) ; //建立动态对象
pt->x = 100 ; pt->y = 200 ;//用指针访问对象成员
pt->print() ;
test.x = 150 ; test.y = 450 ;
test.print() ;
cout << "x+y=" << add(&test) ;//向函数传递对象地址
}
4.
this指针
成员函数隐含定义this指针,接收调用对象的地址#include<iostream> //例6-5
using namespace std ;
class Simple
{ int x, y ;
public :
void setXY ( int a, int b) { x = a ; y = b ; }//void setXY (int a,int b,Simple * const