C++基础—类的构造,友元方法、友元类

头文件 student.h

#ifndef Student_H

#define Sudent_H

class Sudent {

// 友元函数

friend void test(Student *);

// 友元类 通过友源类访问私有变量

friend class Teacher;

    int i;

public:     // 相同的作用域的方法放在一起

    Student(int i, int j); // 构造方法

   ~Sudent(); // 析构方法,系统调用

   void setJ(int j);

 

// 常量函数, 函数内的代码,不能修改类中的成员

   void setk(int k) const;

private:

   int j;

 

protect:

  int k;

}

// 内部类

class Teacher {

public :

    void call(Student* s) {

        s->j = 111; // 无法直接访问私有变量,需要声明为 友元类

   }    

}

#endif 

 

 

Student.cpp

#include "Student.h"

#include<iosstream>

using namespace std;

// 实现构造方法

Student::Student(int i, int j) :i(i) { // 构造方法特殊形式,把i复制给i 等于  this->i = i;

    this->i = i;

    count<<"构造方法"<<endl;

    malloc

}

void Student::void setJ(int j) {

    this->j = j;

}

 

Student::~Student() {

     cout<<"析构方法"<<endl;

}

 

// main 函数

#include<iosstream>

using namespace std;

void test(Student* stu) {

   //  sut->j = 100; // 无法直接修改private属性, 需要声明友元函数,通过友元函数,外部类可以访问类的私有变量

 // 友元函数 friend 在 Student中声明

}

int main() {

   Student student;

   test();  // 通过友元函数 对 private 属性赋值

   count<<"Hello world! \n"

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值