Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.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++ - Fatal编程技术网

C++ 继承或结构转换为结构

C++ 继承或结构转换为结构,c++,C++,我想知道这两者之间的区别是什么: struct A { struct B{}; }; 以及: 在第一个代码段中,B是A中的嵌套结构,因此,如果需要从中创建对象,则应执行以下操作 A a;//A object A::B b;//B object A a;//A object B b;//B object 在第二个代码段中,B继承自A,因此,如果需要从中创建对象,应执行以下操作 A a;//A object A::B b;//B object A a;//A object B b;//B

我想知道这两者之间的区别是什么:

struct A
{
  struct B{};
};
以及:


在第一个代码段中,
B
A
中的嵌套结构,因此,如果需要从中创建对象,则应执行以下操作

A a;//A object
A::B b;//B object
A a;//A object
B b;//B object
在第二个代码段中,
B
继承自
A
,因此,如果需要从中创建对象,应执行以下操作

A a;//A object
A::B b;//B object
A a;//A object
B b;//B object

在第二种情况下,所有
A
成员(如果有)也将是
B
的成员,因为
A
是基本结构。

除了@asmmo-answer:

继承可以具有不同的可见性(公共、私有或受保护)。 声明是(仅使用关键字):

如果不指定,继承将是私有的。 这是什么意思

如果:

任何类型为
B
的对象都可以使用
B.func()调用函数
func()
如果它是私有的,则只能在
B
的定义内调用
func()
,但
B
类型化对象不能调用它。 如果它受保护,则只能在
B
和继承自
B
的结构的定义中调用
func()
,而不能调用它们的实例


因此,如果您正在测试继承,您可以开始执行所有的
public
,然后在需要时变得更具体。

欢迎!这个问题似乎是一般编程问题,而不是安全问题。对于StackOverflow来说,这是一个更好的问题
struct A{
void func(){}
};

struct B: public A{};