sizeof(class)---类的字节长度

上代码:

// test_max.cpp : 定义控制台应用程序的入口点。

#include "stdafx.h"
#include <iostream>
using namespace std;

class A
{
public:
	void fun1(){};
	void fun2(){};
};
class B
{
public:
	void fun1(int i=10){};
	void fun2(){};
public:
	char c;
	int a;
};
class C
{
public:
	void fun1(){};
	virtual void fun2(){};
};
class D
{
public:
	void fun1(){};
	virtual void fun2(){};
	virtual void fun3(){};
public:
	int a;
};

int main()
{
	A a;
	A* a1=new A();
	cout<<"A‘s size is "<<sizeof(A)<<"."<<endl;
	cout<<"B‘s size is "<<sizeof(B)<<"."<<endl;
	cout<<"C‘s size is "<<sizeof(C)<<"."<<endl;
	cout<<"D‘s size is "<<sizeof(D)<<"."<<endl;
	cout<<"A‘s object size is "<<sizeof(a)<<"."<<endl;
	cout<<"A‘s object  pointer size is "<<sizeof(a1)<<"."<<endl;
	system("pause");
	return 0;
}

注:VS2010 Win7 32位

总结:

(1)只含有函数成员的类的大小是1(不知为啥,希望大神解释)

(2)含有数据成员的类的大小为数据成员字节对齐后所占空间大小

(3)含有虚函数类,虚函数所占的空间为四字节(一个指向虚函数表的指针,与虚函数的个数无关)

(4)对象与类所占的空间相同

(5)类对象指针的大小为4

sizeof(class)---类的字节长度

时间: 2024-10-07 04:00:52

sizeof(class)---类的字节长度的相关文章

sizeof 和类继承 虚继承 求类大小

代码: #include <iostream> using namespace std; /* class a{ float k; // 4字节 virtual void foo(){} //有一个4字节的指针指向自己的虚函数表 }; class b : virtual public a{ virtual void f(){} }; 有这样的一个指针vptr_b_a,这个指针叫虚类指针,也是四个字节:还要包括类a的字节数,所以类b的字节数就求出来了. 运行结果: 8 16 */ /* clas

sizeof(类)

类的大小是什么?确切的说,类只是一个类型定义,它是没有大小可言的. 用sizeof运算符对一个类型名操作,得到的是具有该类型实体的大小.首先:我们要知道什么是类的实例化,所谓类的实例化就是在内存中分配一块地址 用sizeof对类名操作,得到的结果是该类的对象在存储器中所占据的字节大小,由于静态成员变量不在对象中存储,因此这个结果等于各非静态数据成员(不包括成员函数)的总和加上编译器额外增加的字节.后者依赖于不同的编译器实现,C++标准对此不做任何保证. 确定类大小的几个原则: 为类的非静态成员数

java String长度与varchar长度匹配理解(字符和字节长度理解)

string中的length()长度,返回的是char的数量,每个char可以存储世界上任何类型的文字和字符,一个char 而Oracle库中的指定varchar,指的是字节长度.不是字符.字符和字节之间还有编码格式的转换嘞,对应具体一个字符用多少字节编码问题. 而Oracle库中的指定varchar,指的是字节长度.不是字符.字符和字节之间还有编码格式的转换嘞,对应具体一个字符用多少字节编码问题. 而Oracle库中的指定varchar,指的是字节长度.不是字符.字符和字节之间还有编码格式的转

获取字符串长度、字符长度、字节长度

度量快速开发平台中基础函数中有一个  len  的获取字符长度函数.具体用法是:len ("123Abc字符串") 这个方法得到的结果是:9 即一共有多少个字符,没有区分单字节与双字节的情况. 如果某一个字段设置的长度为9,那刚才这个字符串保存到数据库的时候,会提示字符串过长,因为数据库中一般是按照字节长度来判断的. 度量快速开发平台中,是没有直接提供这个获取字符串字节长度得函数.用户想知道这个字符串占用了多少字节,在平台中如何来得到呢? 我们知道,度量快速开发平台是与c#完美结合使用

apache mina:实现固定字节长度编码解码

在apache  mina 中存在一些解码器. 单字节解码器SingleByteDecodingState 短整型解码器ShortIntegerDecodingState 整型解码器IntegerDecodingState 固定长度字节解码器FixedLengthDecodingState 服务器端代码: public class TestServer { public static void main(String[] args) throws IOException { IoAcceptor

js获取字符串字节长度

先上代码 //返回val的字节长度 function getByteLen(val) { var len = 0; for (var i = 0; i < val.length; i++) { if (val[i].match(/[^\x00-\xff]/ig) != null) //全角 len += 2; else len += 1; } return len; } //返回val在规定字节长度max内的值 function getByteVal(val, max) { var return

java中三种方式获得类的字节码文件对象

package get_class_method; public class ReflectDemo { /** * @param args */ public static void main(String[] args) { getClassObject1(); getClassObject2(); getClassObject3(); } public static void getClassObject1(){ Person p = new Person(); System.out.pr

求一个字符串的字节长度

编写一个方法 求一个字符串的字节长度 假设:一个英文字符占用一个字节,一个中文字符占用两个字节 function GetBytes(str){ var len = str.length; var bytes = len; for(var i=0; i<len; i++){ if (str.charCodeAt(i) > 255) bytes++; } return bytes; } alert(GetBytes("你好,as"));

计算字节长度

<!doctype html><html><head><meta charset="utf-8"><meta name="author" /><meta name="copyright" /><title>计算字节长度</title><script> var str = "abc中文"; // 4e00 - 9fa5 a