`
jiq408694711
  • 浏览: 36568 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类
最新评论

C++中类的sizeof

 
阅读更多
#include <iostream>
using namespace std;

#pragma pack(2)  
class A{  
    int i;		//4
    union U{	//14
        char buff[13];  
        int i;  
    }u;	//注意,这里是申明了一个union变量
    enum{red, green, blue} color;	//4 

	void foo() {}					//0  
    typedef char* (*f)(void*);		//0  
	int g(){int i;}					//0
};

class B{
	B(){}			//0
	virtual g(){}	//4
	virtual f(){}	//所有虚函数放在一张虚表中,指向虚表的指针的4字节
};

class C{};

int main(){
	cout<<sizeof(A)<<endl;	//8
	cout<<sizeof(B)<<endl;	//4
	cout<<sizeof(C)<<endl;	//1
	return 0;
}


再看一个:

#include <iostream>

using namespace std;
class A {  
public:  
    int b;  
    char c;  //注意地址对齐
    virtual void print(){  
        cout<<"this is father's function!"<<endl;  
    }  
};  
  
class B : A {  
public:  
    virtual void print(){  
        cout<<"this is children's function!"<<endl;  
    }  
};  
int main(void){  
    cout<<sizeof(A)<<","<<sizeof(A)<<endl; //12,12      
    return 0;  
}
分享到:
评论

相关推荐

    C++面试-sizeof

    ### C++中的`sizeof`运算符与类大小 在C++编程语言中,`sizeof`运算符被广泛用于获取变量、类型或数据结构所占用的内存空间大小(以字节为单位)。对于基本数据类型来说,`sizeof`的计算相对简单直观;然而,当涉及...

    C++类的sizeof1

    在C++编程语言中,`sizeof`运算符用于计算类型或对象在内存中占用的字节数。在本文中,我们将深入探讨`sizeof`运算符在处理类时的一些细节,特别是涉及空类、非空类、虚函数以及继承时的情况。 1. **空类的sizeof**...

    sizeof 用法汇总 C和C++的语法

    `sizeof`是C和C++中的一个非常重要的运算符,用于获取任何数据类型或变量在内存中占用的字节数。下面将详细讲解`sizeof`的用法。 1. `sizeof`与`strlen`的区别: - `strlen()`函数主要用于计算字符数组(字符串)...

    sizeof 数据结构 C++/C 面试题

    在C++和C编程语言中,`sizeof`运算符是一个非常重要的知识点,它用于计算一个类型或变量在内存中占用的字节数。这个运算符对于理解和优化代码,特别是涉及数据结构和内存管理的部分,至关重要。下面我们将深入探讨`...

    C++的sizeof学习总结

    在C++编程语言中,`sizeof`是一个非常重要的运算符,用于获取数据类型或变量所占用的内存字节数。这个运算符对于理解和优化代码的性能至关重要,因为了解数据类型在内存中的占用可以帮助我们有效地管理资源。下面是...

    C++sizeof使用规则及陷阱分析

    在C++中,`sizeof` 是一个关键字,用于获取变量或类型(包括聚合类型)所占用的存储空间大小(以字节为单位)。这个关键字返回一个 `size_t` 类型的值。 #### 二、`sizeof` 的基本用法 1. **获取基本类型的大小**...

    C/C++中的sizeof运算符和size_t类型的详解

    C/C++中的sizeof运算符和size_t类型的详解 sizeof运算符是C/C++语言中的一种运算符,用于获取操作数被分配的内存空间,以字节为单位表示。它可以作用于变量、数据类型等,例如`sizeof a`或`sizeof(a)`,也可以作用...

    sizeof和strlen区别

    在C/C++编程语言中,`sizeof`和`strlen`是两个非常重要的操作符,它们分别用于获取数据类型的大小和字符串的长度。然而,这两个操作符有着本质的区别,理解和掌握它们的区别对于编写高效且无误的代码至关重要。 ...

    2.2.2 某32位系统下, C++程序,请计算sizeof 的值.md

    2.2.2 某32位系统下, C++程序,请计算sizeof 的值

    C++ sizeof 实例解析

    在C++中使用sizeof要比C复杂很多,因为C++类中有static静态变量,virtual虚函数,还有继承、派生等。sizeof是C语言的一种单目操作符,如C语言的其他操作符++、–等。它并不是函数。sizeof操作符以字节形式给出了其...

    C++ 串口类SerialPort 源码

    本篇将详细介绍"C++串口类SerialPort"的相关知识点,以及如何通过源代码进行串口通信的实现。 首先,`CSerialPort` 类是对串口通信功能进行封装的对象,它通常包含了打开、关闭串口,设置波特率、数据位、停止位、...

    c++中的类模板详细讲述

    ### C++中的类模板详细讲述 #### 一、类模板定义及实例化 **1. 类模板定义** 类模板是一种非常强大的C++特性,它允许我们编写能够处理多种数据类型的类。类模板定义通常遵循以下格式: ```cpp template, /* 其他...

    c++中类长度深度解析

    总结来说,C++中类的长度由其成员变量的大小、内存对齐规则以及是否有虚函数决定。虚函数会导致类的对象增加一个虚函数表指针的大小,用于实现运行时多态。理解这些概念对于优化内存使用和理解C++的内存布局至关重要...

    详细解析C语言中的sizeof

    例如,在Microsoft C/C++ 7.0中,`near`类指针的字节数为2,`far`和`huge`类指针的字节数为4。在一般的Unix环境下,指针的字节数通常为4。 4. **对于数组** - 当操作数具有数组类型时,其结果是数组的总字节数。 ...

    matlab开发-sizeof

    在类中,`sizeof`会包含对象的成员变量和方法的信息。 在MATLAB中,由于自动内存管理,开发者通常不必过于关注内存细节。但是,当涉及到大型数据处理、算法优化或者与C/C++等其他语言交互时,理解`sizeof`和内存...

    C++ const sizeof

    3. **定义类成员函数为常量**:在C++中,`const` 还可以用来定义类的成员函数为常量函数,意味着该函数不会改变类的数据成员。 #### 四、`const` 与 `#define` 的区别 1. **类型安全检查**:`const` 定义的常量...

    C++类的教学初级

    在C++编程中,类是面向对象编程(OOP)的核心概念,它是封装数据和方法的结构。在这个初级C++类的教学中,我们将探讨如何使用函数以及为过渡到面向对象编程做准备。 首先,复习函数的基本知识非常重要。函数是一段...

    解析C语言中的sizeof.docx

    例如Microsoft C/C++7.0中,near类指针字节数为2,far、huge类指针字节数为4。一般Unix的指针字节数为4。 4.当操作数具有数组类型时,其结果是数组的总字节数。 5.联合类型操作数的sizeof是其最大字节成员的字节数...

Global site tag (gtag.js) - Google Analytics