zoukankan      html  css  js  c++  java
  • C++中静态成员函数和普通成员函数存储方式相同

    先从一个示例查看类的创建过程中,静态成员函数和普通成员函数的存储区别。

     1 #include "stdafx.h"
     2 #include<iostream>
     3 #include<string.h>
     4 
     5 using namespace std;
     6 
     7 class Test 
     8 {
     9     public:
    10         static int a;
    11         void func1() 
    12         {
    13             cout << "类的地址:" <<this << endl;
    14         };
    15         static void func2() 
    16         {
    17         };
    18 };
    19 int Test::a=1;
    20 
    21 int main() {
    22     printf( "普通成员函数的地址:%X
    ", &Test::func1);
    23     printf( "静态成员函数的地址:%X
    ", &Test::func2);
    24     Test test;
    25     Test test2;
    26     test.func1();
    27     cout << "静态成员变量a的地址:" << &(test.a)<<endl;
    28     printf( "%X
    ", &Test::func1);
    29     cout << &test.func2 << endl;
    30     cout << &test2.func2 << endl;
    31     system("pause");
    32     return 0;
    33 }

    运行结果:

    可以看出类在定义后就会给成员函数(包括静态和动态)分配”存储空间“,当然静态成员变量也会分配。在初始化对象时,这个地址也不会再改变了。

    对应为什么需要使用:printf( "普通成员函数的地址:%X ", &Test::func1); 获取静态函数的地址,可以参考:https://blog.csdn.net/zzhays/article/details/8036098

  • 相关阅读:
    STL容器内数据删除
    grep 同时满足多个关键字和满足任意关键字
    程序运行栈空间不足程序崩溃问题
    VS2010中设置程序以管理员身份运行
    python 包详解
    select 详解
    Hdu 1166
    CF1204C
    CF1204B
    CF1204A
  • 原文地址:https://www.cnblogs.com/skytcat/p/11339793.html
Copyright © 2011-2022 走看看