通过参数初始化表同样可以对对象进行初始化,在函数首部与函数体之间增添了一个冒并加上title(a),price(p)语句,这个语句的意思相当于函数体内部的 title = a; price = p; 语句。这样做对于两个成员变量的类来说看不出什么优势,但是一旦当成员变量非常多的时候,通过参数初始化列表进行初始化其优势便可以显现出来了,如此写法简洁明了。
class book
{
public:
book(){}
book(char* a, double p);
void setprice(double a);
double getprice();
void settitle(char* a);
char * gettitle();
void display();
private:
double price;
char * title;
};
book::book(char *a, double p):title(a),price(p){}//初始化表
参数初始化表还有一个很重要的作用,那就是为const成员变量初始化。
初始化const成员变量的唯一方法只有利用参数初始化表。
class Array
{
public:
Array():length(0){num = NULL;}
Array(int * a): num(a), length(5){}
private:
const int length;
int * num;
};
使用参数初始化表还需要注意的是,参数初始化顺序与初始化表列出表量的顺序无关,参数初始化顺序只与成员变量在类中声明的顺序有关。