(1)访问类成员
类的三大特点之中包括“封装性”,封装在类中的数据可以设置成对外可见或不可见。
通过关键字 public(公有)、private(私有)、protected(保护)可以设置类中数据成员对外是否可见,也就是其他类是否可以访问该数据成员。
public:成员对外可见,对内可见;
private:成员对外不可见,对内可见;
protected:成员对外不可见,对内可见,且对派生类可见;
代码如下:
class Person
{
private:
/*成员变量*/
int mIndex;
char* mName;
short mAge;
protected:
/*成员函数*/
char* getName();
void setName(char name[25]);
public:
/*成员函数*/
int getIndex();
void setIndex(int index);
short getAge();
void setAge(short age);
};
通常情况下,成员变量设置为private,成员函数设置为public或protected。
(2)内联成员函数
在定义函数时,可以使用 inline 关键字将函数定义为内联函数。
其实,对于成员函数来说,如果其定义在类体中,即使没有使用 inline 关键字,该成员函数也被认为是内联成员函数。
可以在类中的成员函数设置为内联函数:
inline int getIndex();
也可以在类成员函数的实现部分设置为内联函数:
inline int Person::getIndex() {
return mIndex;
}
对于内联函数来说,程序会在函数调用的地方直接插入函数代码,如果函数体语句较多,则会导致程序代码膨胀。
(3)静态类成员
静态成员可以使用类名来访问。
访问成员变量:
// 静态成员变量
static char* mName;
// 用类直接访问静态成员变量
char* name = Person::mName;
访问成员函数:
// 静态成员函数
static void setName(char name[25]);
// 用类直接访问静态成员变量
char* name = Person::getName();
(4)隐藏的 this 指针
void Person::setIndex(int index) {
mIndex = index;
}
mIndex 是成员变量,通过调用 setIndex 方法设置index值,假设将形式参数 int index 改成 int mIndex
void Person::setIndex(int mIndex) {
mIndex = mIndex;
}
那么作用域就紊乱了,此时不知道 mIndex 来源于成员变量,还是来源于形式参数?
这时,需要使用隐藏的 this 指针了,使用 this 指针调用成员变量:
void Person::setIndex(int mIndex) {
this->mIndex = mIndex;
}
this指针只能调用类中的非静态成员,它的作用域是整个类,或者说它本身就是类对象的副本。
(5)嵌套类
一个类中是允许存在另一个类的,我们将类中的类称之为 嵌套类。
class Person
{
private:
int mIndex;
public:
int getIndex();
void setIndex(int index);
class Node // 我是嵌套类
{
private:
int mNode;
public:
int getNode();
};
};
(6)局部类
函数中的类叫局部类,代码如下:
void Person::setAge(short age) {
mAge = age;
class Node // 我是局部类
{
private:
int mNode;
public:
int getNode();
};
}
[本章完...]
网友评论