相关疑难解决方法(0)

C struct是盒装类型时,C struct是unboxed吗?

正如许多书中所提到的,与C++结构和类的区别在于访问控制描述符.因此,我想知道以下陈述是否正确:

C中的struct是unboxed:struct中的成员明显位于分配struct的位置.但是C++中的struct是类似盒子的类型:members/headers位于其他地方,并且分配struct的地方包含指向members/headers的指针.

这种理解对吗?

是否可以在C++中创建一个未装箱的类型,它还包含实例方法?

c c++ struct

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

将具有条件的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++中结构和类的区别有什么最有趣的错误观点?

人们对C++中结构和类的区别有什么最有趣的错误观点?

c++ structure class

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

为什么我们在C++中需要`class`?

使用struct我们可以实现以下所有功能class:

  • 构造函数,析构函数
  • 成员函数,静态函数.
  • 重载函数,虚函数
  • 公共/私人/受保护的访问说明符.
  • 运营商

唯一的区别是默认访问权限:private为class,public为struct.
为什么我们需要一个班级呢?

c++

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

结构与对象C++

可能重复:
C++ C++中struct和class之间的区别是什么
- struct vs. class

结构与C++中的对象和类有何不同?使用对象或结构有任何性能优势吗?

c++ struct class object data-structures

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

C++结构中私有和受保护的可用性

我们可以在C++结构中使用访问说明符 - privateprotected- 而不是类吗?

另外,C中是否存在访问修饰符?

c c++

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

在C++中交换class&struct关键字

我读的怪C++的功能,称为大约一个注入的类名 在这里.

我试过按照简单的程序

#include <iostream>
class test
{
    int s{3};
    public:
    int get_s()
    { return s; }
};
int main() {
    class test::test s;  // struct test::test s; also allowed. Why???
    std::cout<<s.get_s();
}
Run Code Online (Sandbox Code Playgroud)

如果我在main()程序的第一行用struct替换class关键字仍然编译并运行正常.在这里查看现场演示.为什么?我不应该得到编译错误吗?为什么编译好?

c++ injected-class-name

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

我知道struct是一个类,但代码说不

我试图说服一个朋友,这struct只是class现代C++中的一个.经过大量的争论和资源交换(包括一些SO Q&A)后,我想出了一个通过代码证明它的想法,所以我写道:

class A {};
struct B {};

int main()
{
    cout << (is_class<A>::value ? "Yes" : "No") << "\n";  // output Yes
    cout << (is_class<B>::value ? "Yes" : "No") << "\n";  // output Yes

    cout << (is_same<A,B>::value ? "Yes" : "No") << "\n"; // output No ???
}
Run Code Online (Sandbox Code Playgroud)

如您所见,我对第三cout行输出感到惊讶.所以,我现在被困在这里,我不知道我是否正确.

struct一个class或不?
为什么代码显示两个不同的东西?

更新:

我很清楚struct和class之间有什么区别.令我感到困惑的是答案之间的区别is_classis_same答案.如果不在这里问我该怎么办?这个网站是为了什么?为什么有些用户倾向于提出问题是没有用的,甚至没有评论来指明它不符合要求政策?

请记住,我们并非所有人都会说流利的英语.并非所有人都有多年的经验.

感谢所有回答或评论的人.

c++ struct types class type-traits

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

旧 C++ 版本中 struct 和 class 之间的区别

是否总是在 C++ 中class并且struct仅在默认访问说明符上有所不同?或者在某些早期版本中,C++struct更像 C struct

c++ oop class c++98

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

在 C++ 中使用 std::make_shared 的“类型擦除”代码中的类和结构有什么区别?

我试图通过使用来理解“类型擦除”的行为std::make_shared。基本思想是使用一个类Object来包装一些不同的类,例如类Foo和类Bar。

我编写了以下代码,它确实有效。

// TypeErasure.cpp

#include <iostream>
#include <memory>
#include <string>
#include <vector>

class Base
{
public:
    virtual ~Base() {}
    virtual std::string getName() const = 0;
};

template< typename T >
struct Derived : Base
{
public:
    explicit Derived(const T&& t) : objD(t) {}
    std::string getName() const override
    {
        return objD.getName();
    }
private:
    T objD;
};

class Object
{

public:
    template <typename T>
    explicit Object(T&& t)
        : objPtr(std::make_shared<Derived<T>>(std::forward<T>(t))) {}

    std::string getName() const
    {
        return objPtr->getName();
    }

    std::shared_ptr<const Base> objPtr; …
Run Code Online (Sandbox Code Playgroud)

c++

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