zoukankan      html  css  js  c++  java
  • 成员函数做友元函数

    成员函数做友元函数

    #define _CRT_SECURE_NO_WARNINGS
    #include <iostream>
    #include <string>
    using namespace std;
    
    //只让Visit可以作为友元函数 Visit2不可以
    class House;    //先声明,防止报错
    class GoodGay
    {
    public:
        GoodGay();        //类内声明
        void Visit();        //类内声明
        void Visit2();        //类内声明
        House * h;
    };
    class House
    {
        friend void GoodGay::Visit();    //成员函数作为友元函数,要加上作用域
    public:
        House();            //类内声明
        string m_SittingRoom;
    private:
        string m_BedRoom;
    };
    GoodGay::GoodGay()            // 类外实现构造函数 好基友类的构造函数,创建House对象
    {
        this->h = new House;
    }
    void GoodGay::Visit()        //类外实现成员函数 注意 返回值要与声明的一致
    {
        cout << "好基友正在访问:" << this->h->m_SittingRoom << endl;
        cout << "好基友正在访问:" << this->h->m_BedRoom << endl;
    }
    
    void GoodGay::Visit2()        //类外实现成员函数 注意 返回值要与声明的一致
    {
        cout << "好基友正在访问:" << this->h->m_SittingRoom << endl;
        cout << "好基友正在访问:" << this->h->m_BedRoom << endl; //error
    }
    House::House()
    {
        this->m_SittingRoom = "客厅";
        this->m_BedRoom = "卧室";
    }
    
    int main()
    {
        system("Pause");        //阻塞功能
        return EXIT_SUCCESS;    // 返回正常退出
    }

    只有Visit能访问私有属性

  • 相关阅读:
    【Spring Cloud】异常记录
    目录
    java8 语言特性
    Java 8 并发编程
    Spring Boot系列(四) Spring Cloud 之 Config Client
    找到字符串中最长的非重复子串
    Spring Boot系列(四) Spring Boot 之验证
    链表两数相加(add two numbers)
    找到数组中和为给定值的两个数
    Spring Boot系列(三) Spring Boot 之 JDBC
  • 原文地址:https://www.cnblogs.com/yifengs/p/15170933.html
Copyright © 2011-2022 走看看