C++类的成员变量和成员函数
类是一种数据类型,该类型类似于普通的数据类型,但是又有别于普通的数据类型。类这种数据类型是一个包含成员变量和成员函数的一个集合。下面是 student 类的定义。
【例 1】类可以包含成员变量和成员函数:
有两种方法可以给出成员函数的定义:
下面我们分别给出两种情况的示例。
【例 2】在类内部进行函数的声明和定义:
内联函数可以通知编译器在编译阶段用成员函数 set_age() 和 get_age() 的函数体替换掉所有调用该函数的代码,这样替换后的代码将不会再出现对这个函数的调用的代码。通过直接的替换可以在一定程度上提高程序运行效率,通常只是用于一些简短函数。
【例 3】在类内部声明函数,在类外部定义函数:
在类内声明函数,如果在函数声明时使用 inline 关键字,如例 4 所示,则可以将类内声明类外定义的函数强制转换为内联函数。
【例 4】强制转换为内联函数:
声明:《C++系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。
【例 1】类可以包含成员变量和成员函数:
class student
{
char name[20]; //姓名
int id_num; //学号
int age; //年龄
char sex; //性别
void set_age(int a);
int get_age();
};
本例声明了类 student,并且在 student 类中声明了四个成员变量:name、id_num、age 和 sex。这四个成员变量用于描述 student 特性。除此之外我们还在类中定声明了两个函数 set_age() 和 get_age(),这两个函数是 student 类的成员函数,这两个函数只给出了声明,未给出定义。有两种方法可以给出成员函数的定义:
- 在类内部进行函数的声明和定义,此种方式我们成为 inline,也即内联定义。inline 是C++关键字,专门用于表示内联;
- 在类内进行函数声明,在类外部进行函数定义。
下面我们分别给出两种情况的示例。
【例 2】在类内部进行函数的声明和定义:
class student
{
char name[20]; //姓名
int id_num; //学号
int age; //年龄
char sex; //性别
void set_age(int a){age = a;}
int get_age(){return age;}
};
在本例中,两个成员函数均是在类声明内部进行声明和定义的,因此这两个函数是 inline 类型的。内联函数可以通知编译器在编译阶段用成员函数 set_age() 和 get_age() 的函数体替换掉所有调用该函数的代码,这样替换后的代码将不会再出现对这个函数的调用的代码。通过直接的替换可以在一定程度上提高程序运行效率,通常只是用于一些简短函数。
【例 3】在类内部声明函数,在类外部定义函数:
class student
{
char name[20]; //姓名
int id_num; //学号
int age; //年龄
char sex; //性别
void set_age(int a);
int get_age()const;
};
//在类外部定义set_age函数
void student::set_age(int a)
{
age = a;
}
//在类外部定义get_age函数
int student::get_age()const
{
return age;
}
本例中 set_age() 和 get_age() 函数在类声明内部仅有声明部分,而无定义部分,其函数体在类声明之外定义。本例中定义函数采用了域解析符::。在类内声明函数,如果在函数声明时使用 inline 关键字,如例 4 所示,则可以将类内声明类外定义的函数强制转换为内联函数。
【例 4】强制转换为内联函数:
class student
{
char name[20]; //姓名
int id_num; //学号
int age; //年龄
char sex; //性别
inline void set_age(int a);
inline int get_age();
};
//在类外部定义set_age函数
void student::set_age(int a)
{
age = a;
}
//在类外部定义get_age函数
int student::get_age()
{
return age;
}
在例 4 中,student 类中声明函数 set_age() 和 get_age() 时都使用了 inline 关键字,这就使得这两个函数也成为了内联函数,尽管它们是在类外进行定义函数体的。声明:《C++系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。