相关疑难解决方法(0)

为什么C++中空类的大小不为零?

可能重复:
C++:空类对象的大小是多少?

为什么以下输出1

#include <iostream>

class Test
{
};

int main()
{
    std::cout << sizeof(Test);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ sizeof

74
推荐指数
4
解决办法
5万
查看次数

C中空结构的大小是多少?

据对我来说,它是零,但似乎有一点混乱这里

我用gcc编译器对它进行了测试,它给出了零作为输出.我知道在C++中,空类的大小是1.如果我在这里遗漏任何东西,请告诉我.

c compiler-construction

24
推荐指数
3
解决办法
7314
查看次数

c ++中的非静态块

C++中是否存在非静态块?

如果不是,如何优雅地模仿它?

我想替换类似的东西: -

class C{
    public: void ini(){/* some code */}
};
class D{
    std::vector<C*> regis; //will ini(); later
    public: C field1; 
    public: C field2;  
    public: C field3;             //whenever I add a new field, I have to ... #1
    public: D(){
        regis.push_back(&field1);
        regis.push_back(&field2);
        regis.push_back(&field3); //#1 ... also add a line here
    }
    public: void ini(){
        for(auto ele:regis){
            ele->ini();
        }
    }
};
Run Code Online (Sandbox Code Playgroud)

与: -

class D{
    std::vector<C*> regis;                        
    public: C field1;{regis.push_back(&field1);}//less error-prone (because it is on-site)
    public: C field2;{regis.push_back(&field2);}
    public: …
Run Code Online (Sandbox Code Playgroud)

c++ initialization non-static c++14

9
推荐指数
1
解决办法
523
查看次数

repr(C) 在 Rust 中的零大小类型上表现如何?

我看到这篇文章解释了 C 中的结构体大小不能为零,并且必须至少有一个命名字段才不会出现未定义的行为。然而,在 Rust 中,我们可以拥有这样的结构。我们还可以#[repr(C)]文档中将结构标记为“做 C 所做的事情”。

所以很自然地,我去操场尝试这个

#[repr(C)]
struct ZeroSized;

fn main() {
    println!("Size: {}", std::mem::size_of::<ZeroSized>());
}
Run Code Online (Sandbox Code Playgroud)

这段代码确实打印出了 0。

我想知道#[repr(C)]如果在 C 中禁止使用零大小的结构,Rust 是否允许它们,甚至是 UB?这样一个结构体的最终大小实际上会是 0 吗?如果我在内存中复制这个结构会发生什么?我什至可以有一个指向它的指针吗?

c rust

4
推荐指数
1
解决办法
178
查看次数

C和C ++中空结构的大小

空结构的sizeof在C中为0字节,但在C ++中为1字节。为什么?有什么不同?

c c++

2
推荐指数
1
解决办法
6373
查看次数