C++类的静态数据成员和静态成员函数


当前第2页 返回上一页

静态成员函数与普通成员函数的区别:

?静态成员函数没有 this 指针,只能访问静态成员(包括静态成员变量和静态成员函数)

?普通成员函数有 this 指针,可以访问类中的任意成员;而静态成员函数没有 this 指针

使用静态成员了解构造与析构函数的调用情况

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

#include <iostream>

using namespace std;

 

class A {

    friend class B; //类B是类A的友元

public:

    static int value;

    static int num;

    A(int x, int y) {

        xp = x, yp = y;

        value++;

        cout << "调用构造:" << value << endl;

    }

    void displayA() {

        cout << xp << "," << yp << endl;

    }

    ~A() {

        num++;

        cout << "调用析构:" << num << endl;

    }

private:

    int xp, yp;

};

class B {

public:

    B(int x1, int x2) : mpt1(x1 + 2, x2 - 2), mpt2(x1, x2) {

        cout << "调用构造\n"; //mpt是类A的对象,有几个mpt,有关类A的操作便执行几次

    }

    void set(int m, int n);

    void displayB();

    ~B() {

        cout << "调用析构\n"; //析构函数在类结束前调用,类结束的时候释放类申请的空间

    }

private:

    A mpt1, mpt2;       //将A类的对象声明为B类的私有数据成员

};

 

int A::value = 0;

int A::num = 0;

void B::set(int m, int n) {

    mpt1.xp = m * 2, mpt1.yp = n / 2;

}

void B::displayB() {

    mpt1.displayA();

}

 

int main() {

    B p(10, 20);

    cout << "Hello world!" << endl;

    B displayB();    //通过友元,使类B输出类A的私有数据成员

    return 0;

}

相关文章:

C++静态成员与常成员的使用

C++复习要点总结之五静态成员变量及成员函数

以上就是C++类的静态数据成员和静态成员函数的详细内容!

返回前面的内容

相关阅读 >>

c 语言中 fun 函数怎么用?

c++中动态内存分配与命名空间介绍

strcat 在 c 语言中是什么意思?

学好c语言可以干什么?

c++类的静态数据成员和静态成员函数

精选的这19道c/c+面试题,你能答对多少呢? - 个人文章 思否

c语言中double是什么意思?

c/c++中如何使用extern关键字

c语言 三种求回文数的算法

c中fork()和exec()之间的区别是什么?fork()和exec()的简单比较

更多相关阅读请进入《c》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...