C++中静态成员函数和普通成员函数存储方式相同
先从一个示例查看类的创建过程中,静态成员函数和普通成员函数的存储区别。
#include "stdafx.h"
#include<iostream>
#include<string.h> using namespace std; class Test
{
public:
static int a;
void func1()
{
cout << "类的地址:" <<this << endl;
};
static void func2()
{
};
};
int Test::a=; int main() {
printf( "普通成员函数的地址:%X\n", &Test::func1);
printf( "静态成员函数的地址:%X\n", &Test::func2);
Test test;
Test test2;
test.func1();
cout << "静态成员变量a的地址:" << &(test.a)<<endl;
printf( "%X\n", &Test::func1);
cout << &test.func2 << endl;
cout << &test2.func2 << endl;
system("pause");
return ;
}
运行结果:

可以看出类在定义后就会给成员函数(包括静态和动态)分配”存储空间“,当然静态成员变量也会分配。在初始化对象时,这个地址也不会再改变了。
对应为什么需要使用:printf( "普通成员函数的地址:%X\n", &Test::func1); 获取静态函数的地址,可以参考:https://blog.csdn.net/zzhays/article/details/8036098
C++中静态成员函数和普通成员函数存储方式相同的更多相关文章
- [Reprint]C++普通函数指针与成员函数指针实例解析
这篇文章主要介绍了C++普通函数指针与成员函数指针,很重要的知识点,需要的朋友可以参考下 C++的函数指针(function pointer)是通过指向函数的指针间接调用函数.相信很多人对指向一般 ...
- C++类的成员函数(在类外定义成员函数、inline成员函数)
类的成员函数(简称类函数)是函数的一种,它的用法和作用和前面介绍过的函数基本上是一样的,它也有返回值和函数类型,它与一般函数的区别只是:它是属于一个类的成员,出现在类体中.它可以被指定为private ...
- 【转】C++ const成员变量和成员函数(常成员函数)
转:http://c.biancheng.net/view/2230.html 在类中,如果你不希望某些数据被修改,可以使用const关键字加以限定.const 可以用来修饰成员变量和成员函数. co ...
- C++ const成员变量和成员函数(常成员函数)
在类中,如果你不希望某些数据被修改,可以使用const关键字加以限定.const 可以用来修饰成员变量和成员函数. const成员变量 const 成员变量的用法和普通 const 变量的用法相似,只 ...
- C++中怎么获取类的成员函数的函数指针?
用一个实际代码来说明. class A { public: staticvoid staticmember(){cout<<"static"<<endl;} ...
- C++调用动态库中的虚基类成员函数时总是进错函数
原创文章,转载请注明作者与本文原始URL. 问题描述:最近遇到这样一个问题,在调用C++的一个成员函数时,总是进错函数.在调用 pMsg->GetMsgContent() 的时候,总是进入到 p ...
- C++学习之普通函数指针与成员函数指针
函数指针(function pointer)是通过指向函数的指针间接调用函数.相信很多人对指向一般函数的函数指针使用的比较多,而对指向类成员函数的函数指针则比较陌生.我最近也被问到了这方面的问题,心中 ...
- 函数指针和成员函数指针有什么不同,反汇编带看清成员函数指针的本尊(gcc@x64平台)
函数指针是什么,可能会答指向函数的指针. 成员函数指针是什么,答指向成员函数的指针. 成员函数指针和函数指针有什么不同? 虚函数指针和非虚成员函数指针有什么不同? 你真正了解成员函数指针了吗? 本篇带 ...
- MFC中利用CString和Format成员函数将数字格式化输出
str.Format("格式控制字符串”,输出列表): 格式控制字符串包括格式字符串和非格式字符串,用双引号括起来.其中非格式字符串原样输出. 格式字符串是以%开头的字符串:%[标识][输出 ...
随机推荐
- Arrays.binarySearch采坑记录及用法
今天在生产环境联调的时候,发现一个很奇怪的问题,明明测试数据正确,结果却是结果不通过,经过debug查询到原来是Arrays.binarySearch用法错误,记录一下,避免后续再次犯错 具体测试如下 ...
- json页面解析
List<TjfxDTO> cyjbList = new ArrayList<TjfxDTO>(); cyjbList=tjfxService.cyjb_wcjd(tjfxDT ...
- 网DAI之家简单爬取
用requests和bs做个简单的爬取网DAI之家的例子. 只做笔记用. #!/usr/bin/python3 import requestsfrom bs4 import BeautifulSoup ...
- 第六章、Linux 的档案权限不目彔配置
1. 使用者不群组 2. Linux 档案权限概念 2.1 Linux 文件属怅 2.2 如何改变文件属怅不权限: chgrp, chown, chmod 2.3 目彔不档案乀权限意丿 2.4 Lin ...
- 【Oracle】创建用户及设定权限
; grant create session to ufo; grant create tablespace to ufo; grant create table to ufo; grant drop ...
- LightGBM与评分卡
调参策略 最大化 off_ks + 0.8(off_ks-train_ks) import pandas as pd from sklearn.metrics import roc_auc_score ...
- protobuf protocol-buffers 序列化数据 gobs pickling string XML 用C实现的cPickle比pickle快1000倍 protobuf2 protobuf3 差异
场景: 浏览器请求--->python数据生成--->python-生成excel--->浏览器下载excel 目标: 重构为 浏览器请求--->python数据生成---&g ...
- 如何向Makefile传递参数?
答: 直接在make命令的后面加上参数,如: make HOST_CFLAGS=-I. 注意事项: HOST_CFLAGS变量将会替换相应Makefile中的HOST_CFLAGS,也就是Makefi ...
- 8个华丽而实用的Java图表类库
8个华丽而实用的Java图表类库 转 https://www.300168.com/yidong/show-2744.html 核心提示:学习Java的同学注意了!!! 学习过程中遇到什么问题或者 ...
- bat 脚本之 使用函数
bat 脚本之 使用函数 摘自:https://blog.csdn.net/peng_cao/article/details/73999076 2017年06月30日 15:06:37 pengcao ...