结构体与类的区别

wxy201008 2019-08-27 11:51:08
C/C++ 类和结构体的的区别: 1、结构体基本用在很多数据,需要一个结构体来封装这些数据。而类的话,是面向对象的思想,可以有很多接口让人调用,私有变量等外部不能调用,还有保护类型的变量。 2、结构体也可以被认为是一种特殊的类,它不存在任何函数,构造和析构函数也没有,而且是一个公共的的类。 3、结构体在默认情况下成员是公共的(public),类在默认情况下成员是私有的(private)。 4、C++结构体内部成员变量及成员函数默认的访问级别是public,而c++类的内部成员变量及成员函数的默认访问级别是private。 5、C++结构体的继承默认是public,而c++类的继承默认是private。 6、类要加上public变成共有的才能被访问,而结构本身就是共有的可直接访问。 7、C定义结构体变量时需要加struct关键字,C++中定义结构体变量时可以不加struct关键字。
...全文
723 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
csucxy 2019-08-28
  • 打赏
  • 举报
回复
再扩展一下示例,可以看到类可以从结构体派生,结构体也可以从类派生。总之,与C不同,C++的结构体是一个不折不扣的类,尽管它与以class声明的类有区别。 当然,习惯上我们用结构体还是以C风格来使用。 #include <iostream> using namespace std; struct T { int i; T() { i = 0; } void fun(); ~T() = default; }; void T::fun() { cout << i << endl; } struct A :T { float f; A() :f(3.14f) {} void fun(); }; void A::fun() { cout << f << endl; } class B :public A { public: B(char cc); ~B() {}; void fun() { cout << c << endl; } private: char c; }; B::B(char cc) :c(cc) { } struct C :B { long k; C(char ccc) :B(ccc), k(2) {} }; int main(void) { A a; a.fun(); a.T::fun(); B b('A'); b.fun(); b.A::fun(); C c('B'); c.B::fun(); cout << c.k << endl; return 0; }
csucxy 2019-08-28
  • 打赏
  • 举报
回复
C++的结构体同样也可以有成员函数,包括构造函数与析构函数。它不是可以被认为,而是本来就是一种特殊的类。 #include <iostream> using namespace std; struct T { int i; T() { i = 0; } void fun(); ~T() = default; }; void T::fun() { cout << i << endl; } struct A :T { float f; A() :f(3.14f) {} void fun(); }; void A::fun() { cout << f << endl; } int main(void) { A a; a.fun(); a.T::fun(); return 0; }

15,447

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧