先说明一下声明变量和指针变量的几种情况:
/* 声明对象 底层类型和自定义类类型都可以,如:int a(5); */ 类型 变量名 类型 变量名(参数表) 类型 变量名=类型([参数表]) //使用指针,动态内存分配 类型 *指针名 //空指针,但可调用与成员无关的函数 类型 *指针名=new 类型 //若未定义无参构造函数,则成员不初始化 类型 *指针名=new 类型([参数表]) //空()也会对成员初始化 类型 *指针名=new 类型[长度] //有new必有delete,谁new谁delete delete 指针名 delete []指针名
接下来介绍定义类的语法:
对象结构
对象名、属性、操作
类模型结构
类名、属性、操作
class 类名{ public/protected/private: //访问范围说明符,默认为私有 static 类型 成员变量; //静态类型,所有对象共享1份,程序结束后回收 类型 成员变量; //不可初始化 本类类型 *成员变量; //可以是本类指针 or 引用 其他类类型 成员变量;//可为其他类的对象,不可是本类对象,若包含其他类,则本类称为【封闭类】 /* 保持常量性 常量成员必须初始化,常量对象无法调用对象的非常量方法和修改成员的值 常量方法,与普通成员函数同名同参不影响,非常量对象亦可调用常量方法 可调用静态成员 */ const 类型 常量名; //常量成员 返回类型 方法名([参数类型列表]) const; 返回类型 方法名A([参数类型表]); //只声明成员函数 返回类型 方法名([参数类型表]){ //声明并定义成员函数,隐式内联 }
...更多访问范围说明符合更多成员变量 }; //要有分号 类名::静态成员变量=初值; //静态成员变量可以初始化(必须在类体外) 返回类型 类名::方法名A(形参表){ //在类内声明函数 //类体外部再定义函数体 //若想内联,需在声明或定义时显式写inline } 类名::静态成员 或 对象名.静态成员//静态成员可通过类也可通过对象 变量名.成员名; // 普通对象通过.访问 类名 *指针名=new 类名; //指针通过->访问