相关疑难解决方法(0)

C++'struct'和'class'之间的所有区别?

可能重复:
C++中struct和class之间有什么区别

使用只有 C++类之间的差异是私营的默认类成员访问修饰符和悠闲的出样-C的保证.

事实证明我错了,因为这段代码不能编译:

class { int value; } var = { 42 };
Run Code Online (Sandbox Code Playgroud)

这样做:

struct { int value; } var = { 42 };
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚为什么会有区别,但显然在Visual C++ 2008中:

错误C2552 :: 'var'无法使用初始化列表初始化非聚合

所以,是的,我会问多次重复的问题(希望没有重复的答案!):

什么是所有的C++结构和类之间的区别是什么?

当然,如果你发现我在其他问题上遗漏了一些东西,我可以随意关闭它 - 我当然可以.但我没有看到在任何答案中都讨论过这个问题,所以我想我会问.

c++ struct class

6
推荐指数
1
解决办法
1956
查看次数

结构不属于面向对象的程序

或者是吗?

面向对象的设计是否应该使用默认情况下公开成员数据的语言结构,如果有一个同样有用的结构可以正确隐藏数据成员?

编辑:其中一个响应者提到,如果没有不变量,可以使用结构.这是一个有趣的观察结果:结构是一种数据结构,即它包含相关数据.如果结构中的数据成员是相关的,那么总是存在不变量吗?

c++ oop

5
推荐指数
3
解决办法
2262
查看次数

struct和class and inheritance(c ++)

你能保证我,如果在所有访问修饰符(包括继承)structpublic

换句话说:那些是平等的吗?

class C: public B, public A { public:
    C():A(1),B(2){}
    //...
};
Run Code Online (Sandbox Code Playgroud)

struct C: B, A {
    C():A(1),B(2){}
    //...
};
Run Code Online (Sandbox Code Playgroud)

c++ inheritance struct

5
推荐指数
2
解决办法
2425
查看次数

C++:结构真的与类相同吗?

可能的重复:
C++ 中的结构和类有什么区别

这个问题已经被问了很多次,也得到了很多回答,但每隔一段时间我就会遇到一些令人困惑的事情。

总而言之,C++ 结构和类之间的区别是著名的默认公共访问与私有访问。除此之外,C++ 编译器对待结构的方式与对待类的方式相同。结构体可以有构造函数、复制构造函数、虚函数。等等。结构的内存布局与类的内存布局相同。C++ 拥有结构体的原因是为了向后兼容 C。

现在,由于人们对使用结构体或类感到困惑,因此经验法则是,如果您只有普通的旧数据,请使用结构体。否则使用一个类。我读到结构在序列化方面很好,但不知道它来自哪里。

然后有一天我看到这篇文章:http://www.codeproject.com/Articles/468882/Introduction-to-a-Cplusplus-low-level-object-model

它说如果我们有(直接引用):

struct SomeStruct
{ 
    int    field1;
    char   field2;
    double field3;
    bool   field4; 
};  
Run Code Online (Sandbox Code Playgroud)

那么这个:

void SomeFunction()
{
    SomeStruct someStructVariable;
    // usage of someStructVariable
    ... 
}  
Run Code Online (Sandbox Code Playgroud)

和这个:

void SomeFunction()
{ 
    int    field1;
    char   field2;
    double field3;
    bool   field4;      
    // usage of 4 variables
    ... 
}
Run Code Online (Sandbox Code Playgroud)

是相同的。

它表示,如果我们有一个结构体或只写下函数内的变量,生成的机器代码是相同的。当然,这仅适用于您的结构是 POD 的情况。

这就是我感到困惑的地方。Scott Meyers 在《Effective C++》中说,不存在空类这样的东西。

如果我们有:

class EmptyClass { };
Run Code Online (Sandbox Code Playgroud)

它实际上是由编译器布局的,例如:

class EmptyClass
{
    EmptyClass() {}
    ~EmptyClass() {}
    ...
};
Run Code Online (Sandbox Code Playgroud)

所以你不会有一个空的班级。 …

c++ struct class

5
推荐指数
1
解决办法
4067
查看次数

需要:用于维护一维范围列表的C++类

我正在寻找一个可以维护一维范围列表的C++类.

每个范围都定义为一(start,len)对.

我希望能够向列表中添加其他扩展区并自动合并它们.也就是说,如果我们拥有(0,5)(10,5)在列表中,并(5,5)加入,新的列表应该只包含(0,15).

永远不会从列表中删除范围.

有这样的事吗?

谢谢.

c++ algorithm stl-algorithm

5
推荐指数
1
解决办法
142
查看次数

C++ typedef struct vs class

我对C++并不是很熟悉,当我尝试一些测试程序时,我想到了一个关于最好的问题,如果我可以这样说,在C++代码中定义一些原始元素.

我们来看一个描述矩形的类.它会创建它们,绘制它们,旋转它们,调整大小等等...现在在大多数情况下我们必须处理画布上的点.其自身的矩形由2个点描述:左上角和右下角.另外,为了旋转它,您需要一个角度和一个点(锚点).或者可能要移动它,您需要一个给定矩形的新锚点.我想我已经说明了使用积分.那么什么更有效?将此原始定义为类还是结构?

class cPoint
{
public: 
 int X;
 int Y;
};
Run Code Online (Sandbox Code Playgroud)

要么

typedef struct
{
 int X;
 int Y;
}sPoint;
Run Code Online (Sandbox Code Playgroud)

c++ struct typedef class

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

动态创建新结构

我(非常)是C++的新手,我遇到了一些理解结构的问题.我正在使用课程中的示例代码,所以我有:

struct Point {
   int x;
   int y;
}
Run Code Online (Sandbox Code Playgroud)

在另一段代码中,我想写下面的内容:

drawLine(point1, new Point(x, y));
Run Code Online (Sandbox Code Playgroud)

这不起作用,我理解我试图声明一个结构就好像它是一个类,但有没有办法做到这一点?我目前编写了一个辅助函数,它从x,y返回一个Point,但这看起来很迂回.

c++

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

为什么C++同时具有类和结构?

可能重复:
C++中struct和class之间有什么区别

如果结构和类之间的唯一区别是默认访问说明符(在C++中),那么为什么C++也有类?

c++ struct class

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

Scala案例类 - 它们只是结构吗?

所以我刚刚学习了scala案例类,并且我被告知他们习惯于围绕一堆属性提供一个简单的包装器,以便更容易测试相等性.但现在我有两个问题:

  • 这与C++/C#中的结构是一回事吗?
  • 案例类是值类型还是引用类型?

struct scala case-class

4
推荐指数
2
解决办法
4091
查看次数

将具有条件的Ada记录转换为C++

我有一个任务,我需要将一些Ada代码转换为C++代码,使其尽可能与Ada代码相似.Ada代码如下

    type Shape is (Circle, Triangle, Rectangle);
    type Colors is (Red, Green, Blue);
    type Figure(Form: Shape := Circle) is
        record
            Filled: Boolean;
            Color: Colors;
            case Form is 
                when Circle =>
                    Diameter: Float;
                when Triangle =>
                    Left_Side: Integer;
                    Right_Side: Integer;
                    Angle: Float;
                when Rectangle =>
                    Side_1: Integer;
                    Side_2: Integer;
            end case;
        end record;
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用一个class但是根据问题的语言和老师的个性来判断我认为他正在寻找一个struct.我不清楚如何创建一个内部不同情况所需的逻辑struct.老师非常特别,所以我认为需要最小的内存占用.

我是CSc的学生,如果解决方案很简单,请原谅我.谢谢!

更新:所以最终答案比我想象的要简单.

enum Shape {Circle, Triangle, Rectangle};
enum Colors {Red, Green, Blue};
struct Figure {
  bool Filled;
  Colors Color;
  Shape Form; …
Run Code Online (Sandbox Code Playgroud)

c++ struct ada

3
推荐指数
1
解决办法
310
查看次数

标签 统计

c++ ×9

struct ×7

class ×4

ada ×1

algorithm ×1

case-class ×1

inheritance ×1

oop ×1

scala ×1

stl-algorithm ×1

typedef ×1