相关疑难解决方法(0)

C++中struct和class之间有什么区别?

这个问题已在C#/ .Net的背景下提出.

现在我想学习C++中结构和类之间的区别.请讨论技术差异以及在OO设计中选择其中一个的原因.

我将从一个明显的区别开始:

  • 如果您没有指定public:or private:,则结构的成员默认是公共的; 默认情况下,类的成员是私有的.

我确信在C++规范的模糊角落中还有其他差异.

c++ oop struct class c++-faq

427
推荐指数
11
解决办法
34万
查看次数

可以在C++类中使用位字段吗?

在C结构中,可以指定另一个位长度,而不是类型的默认位长度,如下所示:

struct MyStruct{
    int myVar : 1;    //Size of myVar is 1 bit (so it can take values 0 or 1
    int myOtherVar: 4;    //Size of myOtherVar is 4 bits (so it can take values 0 to 15)
}
Run Code Online (Sandbox Code Playgroud)

这称为位字段.

我的问题是,是否也可以在C++类中执行此操作,如下所示:

class MyClass{
    public:
        //Some methods
    private:
        int m_myAttribute : 1;
        int m_myOtherAttribute : 4;
}
Run Code Online (Sandbox Code Playgroud)

我在网上搜索了这个,但我找到的所有比特字段的例子都使用了结构,而不是类.

我测试了这段代码并且编译得很好,但是我想知道属性的大小是否真的是指定的大小,或者编译器是否忽略了位字段并使用了标准int大小.

c++ class bit-fields

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

标签 统计

c++ ×2

class ×2

bit-fields ×1

c++-faq ×1

oop ×1

struct ×1