第3章C+的类 3.1类的声明及定义 3.2访问权限 3.3内联及位段 3.4new和delete 3.5隐含参数this 3.6对象初始化 3.7类的存储空间
第3章 C++的类 3.1 类的声明及定义 3.2 访问权限 3.3 内联及位段 3.4 new和delete 3.5 隐含参数this 3.6 对象初始化 3.7 类的存储空间
3.1类的声明及定义
3.1 类的声明及定义
3.1类的声明及定义 类保留字: class、struct.或union可用来声明和 定义类。struct和union:是C原有的保留字,class 是C++新增加的 。 构造函数:是函数名和类名相同的函数成员 用于产生对象后初始化对象,如为对象申请内 存等。无返回类型,可以重载。 析构函数:是函数名和类名相同且带波浪线的 无参函数成员。用于销毁对象,销毁前先释放 对象申请的内存。无返回类型,不得重载。 如果类没有自定义的构造函数和析构函数,则 C++为类提供缺省的无参构造函数和析构函 数
3.1 类的声明及定义 类保留字:class、struct或union可用来声明和 定义类。struct和union是C原有的保留字,class 是C++新增加的。 构造函数:是函数名和类名相同的函数成员。 用于产生对象后初始化对象,如为对象申请内 存等。无返回类型,可以重载。 析构函数:是函数名和类名相同且带波浪线的 无参函数成员。用于销毁对象,销毁前先释放 对象申请的内存。无返回类型,不得重载。 如果类没有自定义的构造函数和析构函数,则 C++为类提供缺省的无参构造函数和析构函 数
13.1类的声明及定义 【例3.1】定义字符串类型和字符串对象。 #include <alloc.h> struct STRING typedef char *CHARPTR; ∥定义类型成员 ■ CHARPTR s; ∥定义数据成员 ■ int strlen()片 ∥定义函数成员 ■ STRING(CHARPTR); ∥定义构造函数 ■ ~STRING()片 ∥定义析构函数 拐 int STRING:strlen() 用运算符:在类体外定义 for(int k=0;s[k]!=0;k++); ■ return k; ▣}
3.1 类的声明及定义 【例3.1】定义字符串类型和字符串对象。 #include <alloc.h> struct STRING { typedef char *CHARPTR; //定义类型成员 CHARPTR s; //定义数据成员 int strlen( ); //定义函数成员 STRING(CHARPTR); //定义构造函数 ~STRING( ); //定义析构函数 }; int STRING::strlen( ) //用运算符::在类体外定义 { for(int k =0; s[k]!=0; k++); return k; }
3.1类的声明及定义 STRING:STRING(char *t) 用运算符:在类体外定义 for(int k=0;t[k]!=0;k++); s=(char *)malloc(k+1); ■ for(k=0;(s[k灯=t[k)=0;k++)月 ■ STRING:~STRING(){free(s;MI用运算符:在类体外定义 struct STRING x("simple"); void main(){ STRING y("complex"),*z=&y; int m=y.strlen(); m=z->strlen(); ■}
3.1 类的声明及定义 STRING::STRING(char *t) //用运算符::在类体外定义 { for(int k =0; t[k]!=0; k++); s=(char *)malloc(k+1); for(k=0; (s[k]=t[k])!=0; k++); } STRING::~STRING( ) { free(s); }//用运算符::在类体外定义 struct STRING x("simple"); void main( ){ STRING y("complex"), *z=&y; int m=y.strlen( ); m=z->strlen( ); }