C++ class和struct的区别?

C++ 中保留了C语言的struct关键字,并且加以扩充。在C语言中,struct 只能包含成员变量,不能包含成员函数。而在C++中,struct 类似于 class,既可以包含成员变量,又可以包含成员函数。

struct能包含成员函数吗? 能!

struct能继承吗? 能!!

struct能实现多态吗? 能!!!
#include <iostream>
using namespace std;

struct A
{
public:
    A() { cout << "A construct..." << endl;}
    virtual ~A(){ cout << "A deconstruct..." << endl;}
};

struct B: public A
{
public:
    B() { cout << "B construct..." << endl;}
    ~B(){ cout << "B deconstruct..." << endl;}
};

int main()
{
    A *a = new B();
    delete a;
    return 0;
}
// A construct...
// B construct...
// B deconstruct...
// A deconstruct...

C++中的 struct 和 class 基本是通用的,唯有几个细节不同:

使用 class 时,类中的成员默认都是 private 属性的;而使用 struct 时,结构体中的成员默认都是 public 属性的。
class 继承默认是 private 继承,而 struct 继承默认是 public 继承。
class 可以使用模板,而 struct 不能。

C++ 没有抛弃C语言中的struct关键字,其意义就在于给C语言程序开发人员有一个归属感,并且能让C++编译器兼容以前用C语言开发出来的项目。

在编写C++代码时,我强烈建议使用 class 来定义类,而使用 struct 来定义结构体,这样做语义更加明确。

原文链接: https://www.cnblogs.com/vivian187/p/12715588.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    C++ class和struct的区别?

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/342329

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月2日 上午1:33
下一篇 2023年3月2日 上午1:33

相关推荐