在c++中可以继承结构吗?
当前回答
除了Alex和Evan已经说过的,我想补充一点,c++结构体与C结构体不同。
在c++中,结构体可以像c++类一样具有方法、继承等。
其他回答
除了Alex和Evan已经说过的,我想补充一点,c++结构体与C结构体不同。
在c++中,结构体可以像c++类一样具有方法、继承等。
是的。默认情况下,继承是公共的。
语法(示例):
struct A { };
struct B : A { };
struct C : B { };
是的,struct和class完全一样,除了struct的默认可访问性是公共的(而class是私有的)。
在c++中,结构的继承和类的继承是一样的,除了以下不同之处:
从类/结构派生结构时,基类/结构的默认访问说明符为public。在派生类时,默认的访问说明符是私有的。
例如,程序1因编译错误而失败,而程序2正常工作。
// Program 1
#include <stdio.h>
class Base {
public:
int x;
};
class Derived : Base { }; // Is equivalent to class Derived : private Base {}
int main()
{
Derived d;
d.x = 20; // Compiler error because inheritance is private
getchar();
return 0;
}
// Program 2
#include <stdio.h>
struct Base {
public:
int x;
};
struct Derived : Base { }; // Is equivalent to struct Derived : public Base {}
int main()
{
Derived d;
d.x = 20; // Works fine because inheritance is public
getchar();
return 0;
}
当然可以。在c++中,结构体和类几乎是相同的(比如默认为public而不是private就是其中的微小区别)。
推荐文章
- 确定导致分段错误的代码行?
- 如何用反向迭代器调用擦除
- c++中的结构继承
- 基于原型的继承与基于类的继承
- 智能指针(增强)解释
- 如何在GDB中打印c++向量的元素?
- 在c++ 11中局部静态变量初始化是线程安全的吗?
- c++ 11中引入了哪些突破性的变化?
- 如何在c++代码/项目中找到内存泄漏?
- 在Visual Studio中默认从项目中删除安全警告(_CRT_SECURE_NO_WARNINGS)
- auto&&告诉我们什么?
- 我如何调用::std::make_shared类只有保护或私有构造函数?
- 你不应继承std::vector
- 访问越界的数组不会出现错误,为什么?
- c++结构体的成员默认初始化为0吗?