C++中struct和class唯一区别是默认访问权限:struct成员默认public,class默认private;继承时struct默认public继承,class默认private继承;其余功能完全相同,选择使用取决于语义习惯。
C++ 中的结构体(struct)和类(class)在语法和功能上非常相似,很多人会认为它们是完全一样的。其实它们之间确实只有一个关键区别:默认的访问权限不同。
这是 struct 和 class 唯一的本质区别:
除此之外,struct 和 class 在继承、成员函数、构造析构、模板等所有其他特性上完全一致。
示例对比:
struct MyStruct {
int x; // 默认 public
void func() { } // 默认 public
};
class MyClass {
int x; // 默认 private
void func(); // 默认 private
};
上面两个定义中,如果想让 class 的成员公开,必须显式写 public:;而 struct 若不希望公开,也需要手动加 private:。
虽然语言层面几乎一样,但程序员在实践中通常遵循以下约定:
这种用法是一种编码风格,并非强制要求。
例如:
struct Point {
double x, y;
// 简单数据容器,适合用 struct
};
class String {
private:
char data;
size_t len;
public:
String(const char);
~String();
void append(const char*);
// 封装行为和状态,适合用 class
};
除了成员默认访问权限,继承时的默认访问控制也不同:
举例说明:
struct Base { };
struct Derived1 : Base
{ }; // 等价于 public Base
class Derived2 : Base { }; // 等价于 private Base
不过实际开发中,建议显式写出继承方式,避免混淆。
struct 和 class 都支持:
也就是说,你可以用 struct 实现一个完整的类,也可以用 class 表示一个纯数据结构。
例如这个 struct 完全像一个 class:
struct Counter {
private:
int value;
public:
Counter() : value(0) {}
void inc() { ++value; }
int get() const { return value; }
};
它和用 class 写的效果完全一样。
基本上就这些。记住:C++ 中 struct 和 class 只有默认访问权限的区别,其他都一样。选择用哪个,更多是语义和团队规范的问题。不复杂,但容易忽略细节。
# 编码
# app
# c++
# 区别
# 运算符
# 面向对象
# 封装
# 成员变量
# 成员函数
# 构造函数
# 析构函数
# 结构体
# 数据结构
# 继承
# 虚函数
# 接口
# class
# public
# private
# Struct
# 多重继承
# 运算符重载
# 对象
# 访问权限
# 可以用
# 这是
# 是一种
# 可以直接
# 他都
# 想让
# 人会
# 若不
相关文章:
如何在万网主机上快速搭建网站?
正规网站制作公司有哪些,目前国内哪家网页网站制作设计公司比较专业靠谱?口碑好?
制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?
为什么Go需要go mod文件_Go go mod文件作用说明
杭州银行网站设计制作流程,杭州银行怎么开通认证方式?
如何选择网络建站服务器?高效建站必看指南
如何用免费手机建站系统零基础打造专业网站?
海南网站制作公司有哪些,海口网是哪家的?
建站之星各版本价格是多少?
建站之星免费模板:自助建站系统与智能响应式一键生成
如何在Golang中使用replace替换模块_指定本地或远程路径
网站制作话术技巧,网站推广做的好怎么话术?
h5在线制作网站电脑版下载,h5网页制作软件?
高端建站如何打造兼具美学与转化的品牌官网?
香港服务器租用每月最低只需15元?
如何用西部建站助手快速创建专业网站?
如何使用Golang table-driven基准测试_多组数据测量函数效率
西安大型网站制作公司,西安招聘网站最好的是哪个?
免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?
高防服务器租用首荐平台,企业级优惠套餐快速部署
网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?
建站之星如何取消后台验证码生成?
电影网站制作价格表,那些提供免费电影的网站,他们是怎么盈利的?
如何在阿里云部署织梦网站?
建站中国官网:模板定制+SEO优化+建站流程一站式指南
建站之星展会模板:智能建站与自助搭建高效解决方案
Swift开发中switch语句值绑定模式
如何在景安云服务器上绑定域名并配置虚拟主机?
专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何在阿里云ECS服务器部署织梦CMS网站?
如何高效利用亚马逊云主机搭建企业网站?
C++如何编写函数模板?(泛型编程入门)
厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?
网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?
网站制作新手教程,新手建设一个网站需要注意些什么?
深圳企业网站制作设计,在深圳如何网上全流程注册公司?
php8.4新语法match怎么用_php8.4match表达式替代switch【方法】
建站org新手必看:2024最新搭建流程与模板选择技巧
广东企业建站网站优化与SEO营销核心策略指南
图册素材网站设计制作软件,图册的导出方式有几种?
青岛网站建设如何选择本地服务器?
建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南
手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?
如何在Ubuntu系统下快速搭建WordPress个人网站?
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
常州企业建站如何选择最佳模板?
建站之星代理如何获取技术支持?
如何用AWS免费套餐快速搭建高效网站?
如何快速搭建支持数据库操作的智能建站平台?
制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?
*请认真填写需求信息,我们会在24小时内与您取得联系。