首页 > 其他分享 >友元

友元

时间:2023-02-24 19:34:44浏览次数:36  
标签:友元 name int age Student include getName

对于类内部的私有成员如果外部的函数想要直接访问类的私有成员是不合法的,而友元函数却能合法访问。

 

#include <iostream>
#include <string>

using namespace std;

class Student {
private:
    string name;
    int age;

public:
    Student(string name, int age) {
        this->age = age;
        this->name = name;
    }

    friend void getName(Student* s);
};

void getName(Student* s) {
    cout << "My friend's name is " << s->name << endl;
}


int main() {
    Student s("eta", 0);

    getName(&s);

    return 0;
}

 

标签:友元,name,int,age,Student,include,getName
From: https://www.cnblogs.com/meetalone/p/17152861.html

相关文章

  • 友元函数
    什么是友元类的友元函数是定义在类外部,但有权访问类的所有私有(private)成员和保护(protected)成员尽管友元函数的原型有在类的定义中出现过,但是友元函数并不是成员函数。......
  • C++友元
    title:C++友元date:2022-05-2018:37:54tags:C++category:cpp参考书籍:C++PrimerEssentialC++编译器:gcc/g++C++友元C++友元是用friend关键修饰的函数或者类,友元......
  • 第七章 类 Part4 友元
    友元目的:访问类中的私有属性类的主要特点之一是数据隐藏,即类的私有成员无法在类的外部(作用域之外)访问。但是,有时候需要在类的外部访问类的私有成员,怎么办?解决方法是......
  • 友元
    友元如果要访问类的私有成员变量,调用类的公有成员函数是唯一的办法,而类的私有成员函数则无法访问。友元提供了另一访问类的私有成员的方案。友元有三种:l友元全局函数。......
  • C++概念之explicit,static成员,友元,内部类,匿名对象,拷贝对象的编译器优化(7千字长文详解!)
    c++详解之explicit,static成员,友元,内部类,匿名对象,拷贝对象的编译器优化关于对象的隐性类型转换类型转换我们知道当我们的将一个内置类型的变量强制赋值个另一个内置类型......
  • C++ 友元函数实现运算符重载、成员函数实现运算符重载
    1.友元函数实现运算符重载(复数的加减法)Complex.h:#pragmaonce#include<string>usingnamespacestd;classComplex{public:Complex();Complex(intr......
  • c++友元类2
    #include<iostream>#include<cmath>usingnamespacestd;classPoint{private: doublex,y; friendclassLine;public: Point(doublei=0,doublej=0) { x=i; y=j; } P......
  • c++友元类
    #include<iostream>usingnamespacestd;classmyComplex//复数类{private: doublereal,imag;public: myComplex(); myComplex(doubler,doublei); friendclassoper;......
  • C++学习笔记——友元函数
    //#include<iostream>//usingnamespacestd;////classStu//{//protected://private://intage;//voidfun()//{//age=12;//......
  • c++友元类2
    #include<iostream>#include<cmath>usingnamespacestd;classPoint{private: doublex,y; friendclassLine;public: Point(doublei=0,doublej=0) { x=i; y=j; }......