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

  • 相关阅读:
    QT中文报错问题
    自动获取UILabel高度
    vi编辑器的使用
    命令例子
    WPF中textBlock 变色功能
    php 删除目录及子文件
    jquery autocomplete插件
    js日历选择控件
    centeros bash: ifconfig: command not found
    php 文件日志类
  • 原文地址:https://www.cnblogs.com/skytcat/p/11339793.html
Copyright © 2011-2022 走看看