在C++编程中,类是一种自定义数据类型,其定义了一些数据和行为。类中的数据和方法可以被分配为不同的访问权限,即private、public和protect。这些访问权限决定了类的成员变量和函数在哪些位置可以被访问。这里是关于C++中类的三种访问权限的完整攻略:
private访问权限
private访问权限表示类成员只能在类内部使用。也就是说,只有在类内部定义的函数能够访问类中的private成员变量和函数,而在类外部定义的函数不能够访问到类的private成员。
以下是一个表示数据加密的示例程序:
#include <iostream>
#include <string>
using namespace std;
class Encryption {
private:
string data;
string encode(string s) {
return "encrypted:" + s;
}
public:
Encryption(string s) {
data = s;
}
void encrypt() {
data = encode(data);
}
void print() {
cout << "Data: " << data << endl;
}
};
int main() {
Encryption e("this is a secret message");
e.encrypt(); // 只有类的函数能够访问到data和encode函数
e.print();
return 0;
}
在上面的例子中,data和encode函数是private成员,只有类内部的函数可以访问它们。main函数调用了Encryption类的public成员函数encrypt和print,这些函数可以访问data和encode函数。
public访问权限
public访问权限表示类成员在类的内部和外部均可以使用。当我们在定义一个类时,需要认真考虑哪些成员应该定义为public,哪些成员应该定义为private/protect。
以下是一个表示学生信息的示例程序:
#include <iostream>
#include <string>
using namespace std;
class Student {
public:
string name;
int age;
string major;
void print() {
cout << "Name: " << name << endl;
cout << "Age: " << age << endl;
cout << "Major: " << major << endl;
}
};
int main() {
Student s = {"Alice", 18, "Computer Science"};
s.print(); // public成员函数可以在类外部调用
return 0;
}
在上面的例子中,name、age和major是public成员,可以在类的内部和外部使用。而print函数也是public成员函数,可以在类外部调用,在函数内部对数据进行操作。
protected访问权限
protected访问权限表示类成员在类内部和派生类中可以使用。派生类是指由该类派生而来的子类。
以下是一个表示人类特征的示例程序:
#include <iostream>
#include <string>
using namespace std;
class Human {
protected:
int height;
int weight;
public:
Human() {
height = 170;
weight = 60;
}
};
class Sportman : public Human {
public:
void print() {
cout << "Height: " << height << endl;
cout << "Weight: " << weight << endl;
}
};
int main() {
Sportman s;
s.print(); // Sportman类可以访问Human类中的protected成员
return 0;
}
在上面的例子中,height和weight是protected成员,只有类内部和派生类中可以使用。Sportman类是Human类的子类,它可以访问父类Human中的protected成员。print函数也是public成员函数,在类外部可以调用。
这里我们介绍了C++中类的三种访问权限:private、public和protected。当我们在定义类时,需要自己认真选取哪些成员应该定义为public,哪些成员应该定义为private/protect,以便于实现特定的程序需求。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++中类的三种访问权限解析:private、public与protect - Python技术站