《accelerated c++》第九章---设计类

Accelerated C++ 习题解答 第9章 部分解答来自网上已有解答 EX.9-1 Student_info.h #pragma once #include #include  class Student_info { public:  Student_info();              Student_info(std::istream&);  std::string name() const { re 阅读详情

本章简单介绍了类的设计,但是包含了一些好的设计原则。


 1一些通用的设计原则

(1)一个函数是否设计成成员函数的原则:如果这个函数改变对象的状态,那么这个函数就应该成为这个对象的成员。

(2)对于内置类型成员变量来说,构造函数中应该给他们提供值,否则,在当对象是局部变量时,内置成员变量的值是错误的(使用所占内存刚好含有的值)。

 2 文件

头文件的代码中使用见过限定的名字。这样别人使用时就可以尽量少的包含必要的声明。

struct Student_info{

std::string name;

double midterm ,final;

std::vector<double> homework;

bfd::cookiemapping::afdaf adf; 

}

 3 成员函数

使用::调用同名的非成员函数。::放在名字前,表示我们要使用这个名字的一个版本,但是这个名字不是任何对象的成员。

double Student_info::grade() const{

return ::grade(midterm,final,homework);

}

const对象只能调用const成员函数。

一个函数是否设计成成员函数的原则:如果这个函数改变对象的状态,那么这个函数就应该成为这个对象的成员。

成员函数在类定义中定义时,默认为内联函数。

 4 构造函数

不带任何参数的构造函数是默认构造函数

一个对象被创建时,发生的步骤:

(1)系统分配内存,保存这个对象

(2)根据构造函数的初始化列表,初始化这个对象

(3)执行构造函数的函数体

对于内置类型成员来说,构造函数中应该给他们提供值,否则,在当对象是局部变量时,内置成员变量的值是错误的(使用所占内存刚好含有的值)。

例如,

Student_info::Student_info():midterm(0),final(0){}

name和vector不用赋值,因为string和vector会调用自身的默认初始化函数

5 问题

(1)为什么成员变量设置为私有?对象的使用者的创建者不是一个,是什么样的场景?

设置成共有的 不利于类封装,会让客户端直接访问成员变量 这与c++的封装思想相悖。故对不允许客户直接操作的成员变量应设置为私有 并可提供 接口(成员函数)访问该变量

(3)课后习题未作

采用MPU6050的手势遥控器 随着社会的发展与进步,电子产品日益更新,个人家庭迎来了越来越多的智能家电。然而,现在的智能电子设备产品的遥控器多数都是按键形的。操作繁琐不直观,学习成本大。并且对于有老人小孩的家庭,给他们的操作带来了巨大的障碍。手势遥控器是指利用简单的手势来指挥电子设备,获得便捷的操作体验。让家庭成员都可以享受科技发展带来的福利。MPU6050是一个运动传感器,内置陀螺仪,再由电子设备利用判断结果做出相应的响应即... 阅读详情

相关推荐

从问卷到结论:手把手教你用SPSS 28完成一份完整的社科数据分析报告

本文详细介绍了如何使用SPSS 28完成社会科学研究中的数据分析报告,从问卷数据导入、清洗到描述性和推断性统计分析,再到结果呈现与报告撰写。通过实际案例演示,帮助研究者掌握SPSS 28的核心功能,提升数据分析效率与报告质量。

weixin_28717431的博客 248

Accelerated C++:通过示例进行编程实践——练习解答(第9章)

9-0. Compile, execute, and test the programs in this chapter. 9-1. Reimplement the Student_info class so that it calculates the final grade when reading the student's record, and stores that grade i

CSAP 1628

STM32 DMA串口重定向printf:高效调试与性能优化实战

本文详细介绍了STM32 DMA串口重定向printf的实现方法与性能优势。通过对比传统方式的CPU高占用问题,阐述了DMA技术如何实现高效数据传输,大幅降低CPU负载。文章包含完整的代码实现、缓冲区管理技巧及实战调试方案,帮助开发者优化嵌入式系统调试效率。

lake5的博客 99

Accelerated C++ 习题答案

1. 在google的groups,也就是http://groups.google.com里发现很多人在讨论这本书中个别题的答案.如果你想要某一道题的答案,就在那搜Accelerated C++ exercise 3-2,其中3-2是题号,这是示范 2. Paul Parks 国外的在弄http://www.parkscomputing.com/accelerated-cpp-solution...

weixin_30883777的博客 553

产品经理-面试题目--持续更新

答:面试官,你好,我叫XXX,来自于XXXX,我系统的学习过软件开发,也主动的积累了不少产品方面的实战经验,在学习期间,我自己独立的完成了2个深度项目,一个是仿抖音的短视频APP全流程设计,另外一个是电商后台系统的模块,通过这些项目,我不仅熟练使用Axure等工具做出高保真原型图和清晰的产品框架,也形成了数据驱动和用户优先的思维习惯,另外,我也注重拓展自己的能力边界,拿到了CAIE人工智能证书,我希望能把AI能力融入到产品场景,提升体验和效率,我非常喜欢产品工作带来的创造性和逻辑性,希望有机会加入贵公司。

m0_63966958的博客 956

告别Godot默认编辑器:手把手教你用VSCode配置C#开发环境(附中文注释避坑指南)

本文详细介绍了如何将VSCode配置为Godot引擎的C#开发环境,提升游戏开发效率。从环境准备、扩展配置到解决中文编码问题,提供完整的避坑指南和高级调试技巧,帮助开发者充分利用VSCode的智能补全和调试功能,打造高效工作流。

weixin_30596023的博客 189

accelerated c++ 读书笔记--第九章

1 、c++类型:内部类型(int\ char)、自定义类型(string、vector、stream) 2 、对于自定义类型:用户可以且必须直接操作数据元素 3、std::是限定名(头文件中必用,对应的源文件包含适当的using声明), using是声明,尽量减少必要的声明数量 4、定义类的成员函数:      1 成员函数的名字是:student_info::read 而不是read

doudouqbj的博客 427

奈曼-皮尔逊准则

奈曼-皮尔逊准则 如果各个假设的先验概率P(Hi)(i=0,1)P(H_i)(i=0,1)P(Hi​)(i=0,1)已知,并且每种判决的代价函数已知,这时,可以用贝叶斯准则进行判决。 如果进一步假设正确判决不付出的代价,而错误判决代价相同,即c00=c11=0,c01=c10=1c_{00}=c_{11}=0,c_{01}=c_{10}=1c00​=c11​=0,c01​=c10​=1,这时可以用最小平均错误概率准则进行判决。 在不知道先验概率P(Hi)(i=0,1)P(H_i)(i=0,1)P(Hi​)(

little_soldier的专栏 1万+

在 OpenDesign 中复刻 Spotify 设计系统:从 DESIGN 文档到 tokens.css 的完整落地指南

> 本文以 [design-systems/spotify/DESIGN-de.md](https://link.gitcode.com/i/622d08461601b2f74a5706f881dd13f1) 为骨架,结合该设计系统包内的 [tokens.css](https://link.gitcode.com/i/6ce1e269d531a54114bf71229391a03b)、[compo

gitblog_00639的博客 928

IMA知识库:从0到1的架构设计与实践

本文探讨了AI时代知识库系统的架构设计与演进路径。通过分析知识入库、知识管理和知识应用三大核心业务流程,提出了应对数据多样性、处理标准化、流量洪峰等挑战的解决方案。重点介绍了基于统一数据格式的解耦设计、异步处理架构、服务拆分策略以及权限安全体系,构建了一个稳定、高效且可扩展的知识库系统。文章强调优秀架构需要持续演进,通过识别薄弱点不断优化,最终实现技术方案与业务需求的平衡。

lovehu6686的博客 1736

Mac 安装neo4j(解压版)最新版本教程

本文介绍了在Mac M系列操作系统上安装Neo4j图数据库的具体步骤。内容包括:从官网下载解压版Neo4j社区版压缩包;通过终端命令将其解压到/opt目录并重命名;配置环境变量以便全局访问;以及常用命令如启动/停止服务、重置密码等。安装完成后,用户可通过浏览器访问http://localhost:7474,使用默认账号neo4j/neo4j登录并根据提示重置密码。该教程简洁明了地指导用户完成Neo4j在Mac上的安装配置过程。

猿小白的博客 909

OpenCV 和 CUDA GPU 加速的计算机视觉实用指南(三)

上一章介绍了在 Jetson TX1 开发板上安装 OpenCV 和 CUDA 的过程。本章将描述如何使用这些功能。将详细描述 Jetson TX1 GPU 的属性,这些属性使其适用于并行处理。本章还将描述如何在我们这本书中之前看到的 CUDA 和 C++代码在 Jetson TX1 上执行。它还将展示 Jetson TX1 GPU 在执行 CUDA 代码时的性能。本章的主要动机将是展示如何使用 Jetson TX1 部署图像和视频处理应用。以基本的图像处理应用,如图像读取、显示、加法、阈值和滤波为例,来展

龙哥盟 1155

2026年数学建模国赛论文排版规范:Word与LaTeX终极对比及模板

提前演练:不要等到比赛开始才第一次使用排版工具。至少在赛前一个月完成1-2篇模拟论文的全流程排版练习。建立检查清单:基于国赛规范制定排版检查清单,在提交前逐项核对——公式编号连续?图表引用准确?参考文献完整?页数不超限?善用模板但不止于模板:模板提供的是起点而非终点。根据自身需求调整宏包配置和样式参数,理解每一行配置的含义。关注评审体验:从评委的视角审视论文——重点内容是否突出?逻辑结构是否清晰?视觉层次是否合理?备份与容错:无论使用何种工具,建立多级备份机制。本地、云端、U盘各存一份,且定期保存历史版本。

YOLO 210

Qt开发入门:从零到跨平台GUI低手

Qt开发入门:从零到跨平台GUI低手

Yusei_0523的博客 550

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

SIFT、SURF及相关特征描述子概述

一、SIFT 1、原理    SIFT来自于David Lowe的Distinctive Image Features from Scale-Invariant Keypoints. D. Lowe. IJCV, 60 (2), 2004.[PDF]。SIFT的提出也是局部图像特征描述子研究领域一项里程碑式的工作。由于SIFT对尺度、旋转以及一定视角和光照变化等图像变化都具有不变性,并且SIF

holybin的专栏 1万+

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

派生类可以访问基类的private成员吗

1.从派生类的使用者来讲, 所有的基类方法和成员都是private的,不可访问 2.从派生类内部来讲, 除了基类的private的方法和成员,其他的都可访问

crazyhacking的专栏 7343

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

c++:strcat潜在的错误不报告

#include #include using namespace std; int main() { char a[]="hello"; char b[]="world"; cout strcat(a,b); cout cout } 运行结果: 5 helloworld 10 这个小程序中数组a的大小被改变了,但是可以正常运行。潜在的错误影响呢

crazyhacking的专栏 1704

《accelerated c++》---------第六章

本章主要讲了算法部分。就是里面的算法。

crazyhacking的专栏 960

函数指针

摘要: 函数指针作用一般有二:1 调用函数  2 作为参数。 需要注意的是typedef这种是定义了 一种函数指针的类型(特定的参数类型和返回值) 代码示例如下, int func1(int x){ return x; } int func2(int x){     cout     return 2; } //函数名做参数,隐式的使用函数指针  int f(int

crazyhacking的专栏 914

<c++ primer>--第五部分 高级主题

一  多重继承与虚继承 1多重继承 派生类的对象包含每个基类的基类子对象。 派生类构造函数的次序按照基类构造函数在派生类类表中的出现顺序。 析构函数的次序是构造函数的逆序。 多个基类可能导致二义性。(含有相同的成员) 解决方法:1指定某个基类。2在派生类中定义这样一个成员。 2虚继承(virtual) 为了避免多次包含同一基类,定义虚继承。 类通过虚继承之处它希望共享其虚基类的状

crazyhacking的专栏 913

《面向对象编程》--c++ primer 第15章

一(数据抽象)继承和动态绑定是面向对象编程最重要的两个行为。 只有public和protected成员才能被继承。 (1)protected成员使用规则 1 像proivate成员一样,protected成员不能被类的用户访问(基类可以访问,基类对象不能访问protected成员)。 2 像public成员一样,protected成员可以被类的派生类访问(派生类可以访问protected成

crazyhacking的专栏 838

抛出异常

抛出异常可以给人家提示出信息,人家可以知道哪错了. 是主动的防范。 是这样的吗?

crazyhacking的专栏 832

第十章-关联容器----重学C++之《 C++ PRIMER》

1综述 关联容器通过键存储和读取元素,而顺序容器通过元素在容器中的位置顺序存储和访问元素。 关联容器大部分行为与顺序容器相同,但是其独特之处在于支持键的使用。 关联容器类型:map(关联数组,元素通过键来读取),set(只有键),multimap(一个键对应多个值),multiset 容器元素根据键的次序排列。例如 map n 那么键值对("abc","abc") 在("abd","ab

crazyhacking的专栏 810

模版与泛型编程--<c++ primer>16章

一 基本定义  模版包括模版类和模版函数。 定义格式为;template class和template没有区别。 inline模版函数:template inline T min(const T&,const T&); 模版形参包括类型模版形参和非类型模版形参。 例如,类型模版形参T,非类型模版形参N template void arrayinit(T (&sparm)[N])

crazyhacking的专栏 712
上一篇: zookeeper系列之异步通知模式-Watcher
下一篇: zookeeper C API
crazyhacking
博客等级 码龄15年 299粉丝 148原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值