8.13长对象
常对象的定义,使用关键字const。语法形式为:类名 const 对象名;
8.14常成员
类包括成员数据和成员函数,因此可以定义相应的常成员函数和常成员数据。
8.14.1常成员数据
其语法形式:
Const 数据类型 变量名;
当对象生成后,定义成常成员数据的量保持不变。
8.14.2常成员函数
语法形式为:
数据类型 函数名(形参列表) const;
对于常成员函数,需要注意:
①常成员函数不能改变所属类的数据成员的值,为了保证安全,规定常成员函数中不能调用一般成员函数。
②关键字const可以作为函数重载的条件。
③常对象只能定义常成员函数,不能访问一般函数。
8.15组合关系
现实世界中对象与对象之间的整体----部分关系又称为组合关系。
//组合关系应用举例
#include<iostream>
#include<cstring>
using namespace std;
class Type{
public:
Type()
{
cout<<"Constructing one type."<<endl;
}
private:
float maxSpeed;
int loadTndex;
float diameter;
char sec[20];
char company[20];
};
class SteeringWheel{
public:
SteeringWheel(){
cout<<"Constructing one SteeringWheel."<<endl;}
private:
int color;
char material[20];
char type[10];
char company[20];
};
class Motor{
public:
Motor()
{
cout<<"Constructing one Motor."<<endl;
}
private:
float gasDischarge;
float oilConsume;
float power;
float zip;
char company[20];
};
class Car{
public:
Car()
{
cout<<"Constructing one Car."<<endl;
}
private:
Type t4[4];
SteeringWheel sw;
Motor m;
};
int main()
{
Car car;
return 0;
}
8.16类模板
类模板是一个可以生成类的“超级数据类型”。定义模板的语法格式为
Template <class 标识符1,.....,class 标识符n>
定义类模板:
#include<iostream>
#include<cstring>
using namespace std;
template <class T>
class Max{
public:
Max(T pFirst,T pSecond,T pThird);
T getMax();
private:
T first;
T second;
T third;
};
template<class T>
Max<T>::Max(T pFirst,T pSecond,T pThird):
first(pFirst),second(pSecond),third(pThird){
}
template<class T>
T Max<T>::getMax()
{
T t;
t=first>second?first:second;
t=t>third?t:third;
return t;
}
int main()
{
Max<int> nMax(1,2,3);
cout<<"nMax is: "<<nMax.getMax()<<endl;
Max<float> fMax(1.1f,2.2f,3.3f);
cout<<"FMax is:"<<fMax.getMax()<<endl;
return 0;
}