Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 班级规模以c+为单位+;基于系统架构_C++_Pointers_Virtual - Fatal编程技术网

C++ 班级规模以c+为单位+;基于系统架构

C++ 班级规模以c+为单位+;基于系统架构,c++,pointers,virtual,C++,Pointers,Virtual,我创建了一个简单的类,并有一个带有虚拟函数的数据成员。下面我粘贴了代码以供参考 class base { public: int i; virtual void foo() { } base() { cout << "constructing a base" << endl; } ~base() { cout << "destroying the ba

我创建了一个简单的类,并有一个带有虚拟函数的数据成员。下面我粘贴了代码以供参考

class base
{
public:
    int i;
    virtual void foo()
    {
    }

    base()
    {
        cout << "constructing a  base" << endl;
    }

    ~base()
    {
        cout << "destroying the base" << endl;        
    }
};
类基
{
公众:
int i;
虚拟void foo()
{
}
base()
{

cout独立于
sizeof(int)
(其系统依赖性-->(@rubenvb感谢链接),例如64位Windows使用4字节作为整数)编译器可以将类填充到最大非结构成员的倍数(在本例中,由于vtable指针,因此为8字节)


这是为了确保对成员的访问在特定地址对齐,以提高性能,并防止可能导致某些CPU上硬件异常的数据访问不对齐。

独立于
sizeof(int)
(其系统依赖-->(@rubenvb感谢链接),例如64位Windows使用4字节作为整数)编译器可能会将类填充到多个最大的非结构成员上(在本例中,由于vtable指针的缘故,为8字节)


这是为了确保对成员的访问在特定地址对齐,以提高性能,并防止可能导致某些CPU上硬件异常的数据访问不对齐。

独立于
sizeof(int)
(其系统依赖-->(@rubenvb感谢链接),例如64位Windows使用4字节作为整数)编译器可能会将类填充到多个最大的非结构成员上(在本例中,由于vtable指针的缘故,为8字节)


这是为了确保对成员的访问在特定地址对齐,以提高性能,并防止可能导致某些CPU上硬件异常的数据访问不对齐。

独立于
sizeof(int)
(其系统依赖-->(@rubenvb感谢链接),例如64位Windows使用4字节作为整数)编译器可能会将类填充到多个最大的非结构成员上(在本例中,由于vtable指针的缘故,为8字节)


这是为了确保对成员的访问在特定地址对齐,以提高性能,并防止数据访问不对齐,这可能会导致某些CPU上出现硬件异常。

在64位系统上,sizeof(int)应该是8
cout如果您计划将其用作基类,请添加虚拟destructor@Debasish@Karoly除了vlad所说的“如果你做对了,你就很少需要问问题”这句话外,还有相当大的误导性,因为在64位系统sizeof(int)上,你可能不知道自己做错了应该是8
cout如果您计划将其用作基类,请添加虚拟destructor@Debasish@Karoly除了vlad所说的“如果你做对了,你就很少需要问问题”这句话外,还有相当大的误导性,因为在64位系统sizeof(int)上,你可能不知道自己做错了应该是8
cout如果您计划将其用作基类,请添加虚拟destructor@Debasish@Karoly除了vlad所说的“如果你做对了,你就很少需要问问题”这句话外,还有相当大的误导性,因为在64位系统sizeof(int)上,你可能不知道自己做错了应该是8
cout如果您计划将其用作基类,请添加虚拟destructor@Debasish@Karoly除了vlad所说的,“如果你做对了,你就很少需要问问题”是一种误导,因为在你问问题之前,你可能不知道自己做错了。。。