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{};