首页 > 编程语言 >cpp 程序设计原理和实践(1)

cpp 程序设计原理和实践(1)

时间:2024-05-17 19:42:20浏览次数:27  
标签:常量 area int double 实践 Bad cpp 程序设计 表达式

初始化的时候避免窄化

double x {2.4};

如何将一个大任务分割为多个小任务

基本原则

  • 抽象 : 不需要了解程序的具体实现细节,细节隐藏在相应的接口中。
  • 分治 : 将一个大问题分割为多个小问题。

如何进行分割

  • 明确各个子程序之间的关系 -- 按照功能进行划分是最简单的
  • 编程之前先进行分析

表达式

常量表达式(constexpr)和常量(const)的区别

  • 常量表达式 --- 需要在编译之前就可以确定值
  • 常量 --- 初始化之后就不会进行改变
constexpr double pi = 3.14;
pi+1; // 是一个常量表达式

类型转换

常见错误: double a = 9/5 --> 结果为 1

原因: 9/5 返回的是一个int而不是double --> 9.0/5 返回一个double值。

异常

带异常处理的函数

class Bad_area {}

int area(int length, int width){
	if xxx throw Bad_area {};
	return length*width;
}

这里 Bad_area 是我么定义的一个新类型,用作 area 中的异常标识。 方便确认异常来之哪里。 throw Bad_area{} 就是创建一个异常并抛出他

此时我们可以这样运行

try{
	int a1 = area(11,22);
}catch(Bad_area){
	cout << "Bad arguement of area()!" <<endl;
}

常见的异常包括 out_of_range runtime_error({string})

try{
	xxx
}catch(runtime_error$ e){
	cout<<e.what() << '\n';
	return 1;
}catch(...){ //用来处理其他所有异常类型  类型 exception 是所有异常的超类
	
}

标签:常量,area,int,double,实践,Bad,cpp,程序设计,表达式
From: https://www.cnblogs.com/bigsharker/p/18198479

相关文章

  • cpp priority_queue
    允许自己添加规则。默认是大根堆--<表示队列后面的元素要小于前面的元素。template<classT,classContainer=std::vector<T>,classCompare=std::less<typenameContainer::value_type>>classpriority_queue;同理建立小根堆priority_queue<int,ve......
  • cpp hash
    一般哈希表都是用来快速判断一个元素是否出现集合里。比如找到一个学生,在不在队列里,这种查找问题,使用hash表,可以快速执行。hash函数:用于将需要填充的值或者索引,映射到hashtable的索引上。哈希碰撞:如果两个事物的hashvalue相同,则出现hash碰撞。一般哈希碰撞有两......
  • FT-FMEA融合混沌演练,零售运营系统韧性架构在线验证实践
    本文分享自华为云社区《FT-FMEA融合混沌演练,零售运营系统韧性架构在线验证实践》,作者:《华为云确定性运维案例集(第2期)》聂刚。一、业务背景某零售企业营业范围覆盖20+个省份、数百个城市,为千家万户的生活提供服务,深受大众青睐。近年来,面对新零售和业务规模的不断扩大,该企业致力于......
  • Ack集群Pod独占EIP实践
    1.背景某线上应用部署在ack集群内,用于根据用户定义的http请求项配置,周期性检查http接口的请求响应状态,接口地址为内网或公网,当接口地址为公网时,频繁出现请求超时的报警错误。经过排查发现,在公网请求发生超时的时刻,集群vpcNAT带宽达到上限200Mbps,也就是25MB/s分析:由于集群占用......
  • 通过MVEL表达式和Apache Chain职责链模式解耦MQ消息处理节点的实践应用
    导读本文主要讲解了MVEL表达式和责任链设计模式相结合一起的消息处理解决方案设计、解耦消息处理节点以及方便代码维护扩展。通过“订单拆单消息”的接入作为具体实践案例,简要阐述了MVEL表达式和ApacheChain职责链设计模式应用场景。希望通过本文,读者可以对MVEL表达式和责任链......
  • 低成本、高稳定性 | 满帮集团 Eureka 和 ZooKeeper 的上云实践
    作者:胡安祥满帮集团,作为“互联网+物流”的平台型企业,一端承接托运人运货需求,另一端对接货车司机,提升货运物流效率。2021年美股上市,成为数字货运平台上市第一股。根据公司年报,2021年,超过350万货车司机在平台上完成超1.283亿个订单,实现总交易价值GTV2623亿元,占中国数字货......
  • B站千万级长连接实时消息系统的架构设计与实践
    本文由哔哩哔哩资深开发工程师黄山成分享,原题“千万长连消息系统”,本文进行了排版和内容优化等。1、引言在当今数字娱乐时代,弹幕已经成为直播平台上不可或缺的互动元素之一。用户通过发送弹幕、送礼等,可以实时在直播画面上展现自己的想法、评论和互动内容,从而丰富了用户观看......
  • MyBatis-Plus 实现多租户管理的实践
    本文主要讲解使用Mybatis-Plus结合dynamic-datasource来实现多租户管理在现代企业应用中,多租户(Multi-Tenant)架构已经成为一个非常重要的设计模式。多租户架构允许多个租户共享同一应用程序实例,但每个租户的数据彼此隔离。实现这一点可以大大提高资源利用率并降低运营成本。在本......
  • Linux-文件操作实践-2
    #昨日回顾什么是环境变量1.环境2.变量环境,你的系统的运行环境,如windows,linux来看看linux中的,环境变量有哪些以及它的作用是什么?变量是有作用的1.自定义变量1.变量的作用[root@fjh001~]#cathello.shname="隔壁的老张"echo"你好$name"echo"吃了吗$name"......
  • ROS学习日记:(报错)terminate called after throwing an instance of 'rclcpp::excepti
    论坛里的一个老哥给出答案https://discourse.ros.org/t/how-to-shutdown-and-reinitialize-a-publisher-node-in-ros-2/4090就是我在初始化环境前先初始化了节点autonode=std::make_shared<Static_tf_broadcaster>(argv);rclcpp::init(argc,argv);rclcpp::spin(nod......