现在的位置: 首页 > 综合 > 正文

面向对象的程序设计学习笔记-21-常量数据成员的定义和初始化

2014年03月21日 ⁄ 综合 ⁄ 共 1246字 ⁄ 字号 评论关闭

/*
常量成员函数
其格式为:
<返回类型> 成员函数名(参数列表) const
注意;当在类体外定义常量成员函数时,切记写上const
普通的成员函数是可以调用常量成员函数的,(但是常量成员函数却不能访问本类的普通成员函数)。
普通对象也是可以调用常量成员函数。而常量对象仅仅能够调用常量成员函数。
*/
/*常量数据成员
可以有两种的表达方式:
const <数据类型> 数据成员名;
或者 <数据类型> const 数据成员名;
常量数据成员只有在该类构造函数的成员初始化列表中完成。
*/
#include<iostream>
using namespace std;
class airliner
{
private:
char name[20];//存放机型名字字符串
char *pn;
const int max_passenger;
int passenger;
public:
airliner(char *str,int max_pass,int pass);//此处的声明是不能够有常量数据成员的初始化的!!!
/*构造函数的初始化中,对静态成员数据进行初始化*/
char * get_name();//读取机型名
char get_name_nil();//无法重载仅按返回类型区分的函数
int get_max_pass();//读取最大载客量
int get_pass();//读取实际的载客量
};
airliner::airliner(char *str,int max_pass,int pass):max_passenger(max_pass)//是不许用类型名的
{
strcpy(name,str);
//另外的方法
pn=new char[strlen(str)+1];
if(pn)
strcpy(pn,str);
passenger=pass;
}
char *airliner::get_name()//尼玛耶,在类体之外,该“*”号是加在类名的前面!!!
{return name;}//因为return name返回的是地址,所以若是想要用return name则需要将返回类型指定为字符指针
//char airliner::get_name_nil()
//{return name;}
int airliner::get_max_pass()
{return max_passenger;}
int airliner::get_pass()
{return passenger;}
void main()
{
airliner a1("波音747",102,89),a2("波音730",120,110);
cout<<"type name \t max passenger \t passenger \n";
cout<<a1.get_name()<<"\t\t"<<a1.get_max_pass()<<"\t\t"<<a1.get_pass()<<endl;
cout<<a2.get_name()<<'\t'<<'\t'<<a2.get_max_pass()<<"\t\t"<<a2.get_pass()<<endl;
}

抱歉!评论已关闭.