1. 定义类
在C++中,类的定义采用关键字class,后面紧跟类名和一对花括号,花括号中是类的成员。类的成员包括数据成员和成员函数,数据成员指的是类中的变量,而成员函数则是类的方法。
class ClassName {
public:
// 成员函数声明
private:
// 数据成员声明
};
其中,public和private是访问限定符,它们用于指定成员函数和数据成员的访问权限。成员函数和数据成员可以被声明为public(公共成员)或private(私有成员),以控制数据的封装性和安全性。
2. 成员函数
2.1 成员函数的声明和定义
成员函数和普通函数的定义与声明方式类似,但需要在类的作用域下进行声明和定义。
在类的定义中,成员函数的声明和定义可以放在public或private访问限定符下,如下所示:
class Example {
public:
// 成员函数的声明
void func1();
void func2();
private:
// 成员函数的声明
void func3();
void func4();
};
// 成员函数的定义
void Example::func1() {
// 函数体
}
void Example::func2() {
// 函数体
}
void Example::func3() {
// 函数体
}
void Example::func4() {
// 函数体
}
需要注意的是,在类外定义成员函数时需要使用类名加“::”来指明成员函数所属的类,可以通过“类名::函数名”的方式来调用成员函数。
2.2 成员函数的调用
调用成员函数需要通过类的对象或类的指针来进行调用,如下所示:
Example obj;
obj.func1(); // 调用成员函数
Example *p = &obj;
p->func2(); // 调用成员函数
通过对象进行函数调用时,使用“.”操作符;通过指针进行函数调用时,使用“->”操作符。
3. 数据成员
3.1 数据成员的声明
数据成员是指类中的变量,可以被声明为public或private,以控制数据成员的访问权限。数据成员通常需要在类的构造函数中进行初始化。
class Example {
public:
// 数据成员的声明
int var1;
double var2;
private:
// 数据成员的声明
char* var3;
};
Example::Example() {
// 初始化数据成员
var1 = 0;
var2 = 0.0;
var3 = NULL;
}
3.2 数据成员的访问
数据成员的访问需要通过类的对象或类的指针来进行访问,可以使用“.”或“->”操作符来访问数据成员。
Example obj;
obj.var1 = 1; // 访问数据成员
obj.var2 = 2.0; // 访问数据成员
Example *p = &obj;
p->var3 = "test"; // 访问数据成员
4. 类的封装和继承
4.1 封装
封装是指将数据和行为打包在一个单元内,并保护这个单元免于被外部干扰或误用。C++中,封装机制的实现具体包括public、private和protected三种访问权限。
public:所有成员都可以访问
private:只有类内部的成员函数可以访问
protected:派生类(子类)的成员函数可以访问
封装可以提高程序的安全性和可维护性,同时也可以避免程序发生不必要的错误。
4.2 继承
继承是指从已有类中派生新的类,从而形成类与类之间的关系。在C++中,派生类(子类)可以继承基类(父类)的成员函数和数据成员,同时也可以新增自己的成员函数和数据成员。
继承可以分为public继承、protected继承和private继承三种,具体机制与访问权限类似。
// 基类
class Shape {
public:
void setWidth(int w) {
width = w;
}
void setHeight(int h) {
height = h;
}
protected:
int width;
int height;
};
// 派生类
class Rectangle: public Shape {
public:
int getArea() {
return (width * height);
}
};
int main() {
Rectangle rect;
rect.setWidth(5);
rect.setHeight(7);
cout << "矩形的面积:" << rect.getArea() << endl;
return 0;
}
在派生类中可以访问基类的public和protected成员,但不能访问基类的private成员。同时,派生类的成员函数和数据成员在派生类内部具有public、protected或private等访问权限。
5. 总结
本文介绍了C++中类的定义、成员函数、数据成员、封装和继承的相关内容,这些是C++面向对象编程的基础知识。
在使用类的过程中,需要注意数据的封装性和安全性,同时也需要注意继承和多态等问题。编写好的类可以提高程序的可维护性和可拓展性,提高开发效率。