美文网首页上嵌学习笔记
C++基础-(静态成员和友元)

C++基础-(静态成员和友元)

作者: I踏雪寻梅 | 来源:发表于2016-11-10 21:22 被阅读11次

C++基础

静态成员和友元

  • static:标志静态成员
  • friend:标志友元
#include <iostream>
using namespace std;
//+int num;使用全局变量
class Student
{   //-int num;
    static int num;
    int id;
    public:
        Student()
        {
    
            //-num=0;每执行一次Student都会重归为0,最后结果为1,1
            num++;
        }
        ~Student()
        {
            num--;
        }
        int getId()
        {
            id=0;
            return num;
        }   
        static int getNum()
        {
            //id=0;//在此处id为int类型,不能在此修饰.一个静态成员函数不与任何对象相联系,故不能对非静态成员进行默认访问。
            return num;
        }
};
int Student::num=0;//初始化一定要在外面
int main()
{
//  cout<<"student num0="<<Student::getNum()<<endl;
    Student t1;
    Student t2;
    Student *t3=new Student;
    cout<<"student num1="<<t1.getNum()<<endl;
    delete t3;
    cout<<"student num2="<<t1.getNum()<<endl;
//  cout<<"student num0="<<Student::getNum()<<endl;
}
  • 静态数据成员用得比较多的场合一般为:
    • 用来保存流动变化的对象个数
    • 作为一个标志,指示一个特定的动作是否发生
    • 一个指向一个链表第一个成员或最后一个成员的指
  • 静态成员函数
    • 静态成员函数定义是类的内部实现,属于类定义的一部分。它的定义位置与一般成员函数一样。
    • 一个静态成员函数不与任何对象相联系,故不能对非静态成员进行默认访问。

友元

#include <iostream>
using namespace std;
class Student
{
    int m_id;
    public:
        Student(int id)
        {
            m_id=id;
        }
        friend void test(Student t);
};
void test(Student t)
{
    cout<<"id="<<t.m_id<<endl;//m_id是受保护的私有的,所以不用friend会出错。
}
int main()
{   
    Student t1(10);
    test(t1);
}
  • 友类
#include <iostream>
using namespace std;
class Student
{
    int m_id;
    public:
        Student(int id)
        {
            m_id=id;
        }
        friend class A;
};
class A
{
    public:
        void test(Student t)
        {
            cout<<"id="<<t.m_id<<endl;
        }
};
int main()
{   
    Student t1(10);
    A a;
    a.test(t1);
}
#include <iostream>
using namespace std;
class Student;
class A
{
    public:
        void test(Student t);
};
class Student
{
    int m_id;
    public:
        Student(int id)
        {
            m_id=id;
        }
        friend void A::test(Student t);
};
void A::test(Student t)
{
    cout<<"id="<<t.m_id<<endl;
}
int main()
{   
    Student t1(10);
    A a;
    a.test(t1);
}
  • 朋友的朋友不是朋友
class S
{
    friend B;
    //friend B;
    //friend A;//可过
}
Class B
{
    friend A;
    
}
class A
{}

相关文章

  • C++基础-(静态成员和友元)

    C++基础 静态成员和友元 static:标志静态成员 friend:标志友元 静态数据成员用得比较多的场合一般为...

  • c++语法2

    接上篇我们继续学习静态成员、友元函数、继承、多重继承,继承访问权限等 静态成员与友元函数:c++中静态成员与jav...

  • 10-C++远征之模板篇-学习笔记

    C++远征之模板篇 将会学到的内容: 模板函数 & 模板类 -> 标准模板类 友元函数 & 友元类 静态数据成员 ...

  • 慕课网-C++远征之模板篇(上)-学习笔记

    C++远征之模板篇 将会学到的内容: 模板函数 & 模板类 -> 标准模板类 友元函数 & 友元类 静态数据成员 ...

  • C++静态成员与友元

    静态成员 静态变量的初始化(如何定义) static int getnum()//静态成员函数 静态成员函数只能操...

  • C++笔记2

    1.Josephus数小孩 2.静态成员 友元1(friend) 友元2

  • c++ 友元

    在c++中,通过关键字friend声明为友元。友元可以范围与其有好友关系的类中私有成员。友元包括友元函数和友元类。...

  • C++中的成员变量和成员函数

    C++中的类有两个成分: (1)成员变量 成员变量按照作用域分为静态成员变量和非静态成员变量,C++中成员变量的默...

  • 设计类型(二)

    设计类型 类型和成员基础 基础概念 友元程序集// 在程序集中的AssemblyInfo.cs中,标记友元程序集名...

  • 第三章 类与对象应用

    学习目的 掌握静态数据成员及静态成员函数的使用; 掌握友元函数的使用; 掌握常成员函数的应用; 掌握对象成员的使用...

网友评论

本文标题:C++基础-(静态成员和友元)

本文链接:https://www.haomeiwen.com/subject/wuixpttx.html