C++ 友元函数详解:友元函数在访问私有成员时的限制?
友元函数可以访问私有成员,但受限制:只能访问当前类(不能访问继承类)的私有成员,且不能直接修改。实战中,友元函数可通过引用或指针访问私有成员,例如访问 student 类的私有成员 name 并打印学生信息。
C++ 友元函数详解:访问私有成员的限制
什么是友元函数?
友元函数是不属于任何类的函数,但可以访问该类中声明的所有成员(包括私有成员)。友元函数允许不同类之间的密切交互,并实现封装类的灵活使用。
友元函数访问私有成员的限制
友元函数访问私有成员时存在一些限制:
友元函数只能访问当前类的私有成员,不能访问继承类的私有成员。
友元函数不能直接修改私有成员。
实战案例
假设我们有一个 类,它有一个私有成员 和一个公有成员 。我们创建一个友元函数 来访问私有成员 并打印学生信息。
class Student {
private:
string name;
public:
int getAge();
// 声明友元函数
friend void printStudentInfo(const Student& student);
};
void printStudentInfo(const Student& student) {
// 可以访问私有成员
cout << "Name: " << student.name << endl;
// 不能修改私有成员
// student.name = "John Doe"; // 错误
}
int main() {
Student student1;
student1.setName("Jane Doe");
printStudentInfo(student1);
return 0;
}
输出:
Name: Jane Doe
在这个示例中,友元函数 可以访问私有成员 ,但不能修改它。另外,需要注意的是,友元函数只能通过引用或指针访问类的成员,不能直接使用对象成员。
下一篇:php中替换字符串的函数
相关推荐
-
golang可变参数是否可以用于函数返回值?
在 go 语言中,可变参数不能用作函数返回值,因为函数的返回值必须是固定类型的。可变参数类型不确定,因此不能用作返回值。Go语言可变参数能用作函数返回值吗?在 Go 语言中,可变参数用于函数输入。那么
-
golang函数与goroutine的协同
在 go 编程中,函数和 goroutine 协同实现并发。goroutine 在函数中创建,函数的局部变量在 goroutine 中可见。goroutine 可以在实战中用于并发处理任务,如并发文件
-
C++ 成员函数详解:对象方法的语法与风格指南
c++++成员函数允许将代码与封装对象关联,实现特定对象的行为和交互。其语法为:return_type _name::function_name(parameter_list),其中包含独特
-
C++ 函数指针与 Boost 库:提升代码效率与性能
函数指针与 boost.function函数指针指向函数地址,boost 库提供对函数指针的增强。boost.function 类支持类型安全和高效地使用函数指针,并允许存储和调用不同类型的函数。使用
-
C++ 成员函数详解:对象方法的底层实现与编译过程
c++++ 中的成员函数是附加在类中的对象方法,用于操作对象中的数据成员。编译过程包括:实例化:为每个成员函数创建函数指针,存储在对象中;调用机制:编译器自动插入类似于 result = ((_thi