面向对象(OOP)思想3

1.再谈构造函数
在我前面写的博客面向对象(OOP)思想2中,我介绍了基本构造函数的使用
但是值得注意的是前面所使用的构造函数实际上并不是对对象进行初始化,而是简单的赋值
Date(int year,int month,int day)
{
_year=year;//赋值操作
_month=month;
_day=day;
}
事实上,C++有对对象的初始化语法,话不多说,先上代码
Date(int year,int month,int day)
:_year(year),
_month(month),
_day(day)
{}
这样,就完成了对类成员变量的初始化
注意事项
1.每个成员只能初始化一次
2.类中包含const,引用,自定义类型成员(该雷没有默认构造)
事实上这里有一个坑,请看一下代码
class Date
{
public:
Date(int c)
:
_c©,
_b(2*_c),
_a(2*_b)
{
}
private:
int _a;
int _b;
int _c;
};
如果这样进行初始化,我们调用打印函数去打印_a,_b,_c的值的时候会发现:
_a和_b打印的实际上是随机值
为什么呢?
因为成员的声明顺序就说初始化顺序
和初始化列表中的顺序无关
比如这里事实上编译器是先初始化_a的,然后_b是个随机值,从而造成这种尴尬的场面
class Date
{
public:
Date(int c)
:
_a©,
_b(2*_a),
_c(2*_b)
{
}
private:
int _a;
int _b;
int _c;
};
这样写就可以
2.static成员
定义: 声明为static的类成员成为静态成员,用static修饰的成员变量,称为静态成员变量,用static修饰的成员函数,称为静态成员函数,静态成员变量一定要在类外进行初始化
特征:
1.静态成员为所有类对象所共享,不属于某个实例
比如
class A{
public
static int _a;
};
int A::_a=0;
A a;
A b;
a._a++;
b._a++;
那么_a的值将是2
2.静态成员必须在类外进行定义,定义时候不加static关键字
3.静态成员都可以用类名::静态成员或者对象.静态成员进行访问
4.静态成员函数没有隐藏的this指针,不能访问任何非静态成员
5.静态成员和普通成员一样,也可以用public,private,protected来进行修饰管理,也可以具有返回值
3.友元
1.友元函数
友元函数是定义在类外部的普通函数,它可以访问类中的所有成员,包括private和public以及protected,不属于任何类,定义时候必须要friend关键字来进行修饰
注意事项
1.友元函数可以访问类的所有成员
2.友元函数不可用const修饰
3.友元函数可以定义在任何地方,不受类的访问限定符限定
4.友元函数的调用方式和普通函数无区别
2.友元类
友元类的可以访问类中的所有成员
使用方法和友元函数类似
friend关键子+ class+类名称即可
有个大前提是有员类必须先进行声明,必须存在
注意事项:
1.友元类可以访问类的所有成员
2.友元类具有单向性,事实上可以理解为单相思,及友元类可以访问类的所有成员二类不能访问友元类的私有和保护成员
3.友元关系不可以传递
比如A是B的友元B是C的友元
但是A并不是C的友元
事实上这很显示,你兄弟的兄弟不一定是你的兄弟
4.内部类
如果一个类的内部还有类,那么这个内部的类就叫做内部类
需要注意的是内部类是一个独立的类,它绝对不属于任何一个类的子类
外部类没有方位内部类成员的权限
事实上内部类是外部类的一个友元类
它可以访问外部类的所有成员
甚至可以直接访问外部类的static成员,枚举成员
3.sizeof(外部类)和内部类没有什么关系

内容概要:本文详细介绍了“秒杀商城”微服务架构的设计与实战全过程,涵盖系统从需求分析、服务拆分、技术选型到核心功能开发、分布式事务处理、容器化部署及监控链路追踪的完整流程。重点解决了高并发场景下的超卖问题,采用Redis预减库存、消息队列削峰、数据库乐观锁等手段保障数据一致性,并通过Nacos实现服务注册发现与配置管理,利用Seata处理跨服务分布式事务,结合RabbitMQ实现异步下单,提升系统吞吐能力。同时,项目支持Docker Compose快速部署和Kubernetes生产级编排,集成Sleuth+Zipkin链路追踪与Prometheus+Grafana监控体系,构建可观测性强的微服务系统。; 适合人群:具备Java基础和Spring Boot开发经验,熟悉微服务基本概念的中高级研发人员,尤其是希望深入理解高并发系统设计、分布式事务、服务治理等核心技术的开发者;适合工作2-5年、有志于转型微服务或提升架构能力的工程师; 使用场景及目标:①学习如何基于Spring Cloud Alibaba构建完整的微服务项目;②掌握秒杀场景下高并发、超卖控制、异步化、削峰填谷等关键技术方案;③实践分布式事务(Seata)、服务熔断降级、链路追踪、统一配置中心等企业级中间件的应用;④完成从本地开发到容器化部署的全流程落地; 阅读建议:建议按照文档提供的七个阶段循序渐进地动手实践,重点关注秒杀流程设计、服务间通信机制、分布式事务实现和系统性能优化部分,结合代码调试与监控工具深入理解各组件协作原理,真正掌握高并发微服务系统的构建能力。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值