《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)课后习题未作

遥感卫星影像AI数据集格式规范详解、技术原理与数据生产全流程技术手册 本技术手册旨在系统性地梳理遥感卫星影像AI数据集的各类格式标准(涵盖VOC、COCO、YOLO及遥感专用DOTA格式等),深入剖析其背后的技术原理,并详细阐述数据生产的全过程,涵盖预处理、标注、质量控制及数据增强等关键环节。无论您是刚入门的算法工程师,还是资深的数据生产管理者,本手册都将为您提供详实的参考与指引。 阅读详情

相关推荐

SAP FI 提示没有为会计年度0 定义版本2025 GP626

SAP 错误 GP626 是一个常见的系统消息,通常表示某个会计年度的版本(如版本 0)未被定义或未激活。:在执行某些事务(如创建采购订单、过账凭证或维护成本中心)时,系统会检查相关版本是否已定义。的“Settings for Each Fiscal Year”界面中,选择一个已激活的会计年度。的“Settings for Each Fiscal Year”界面中,找到未激活的会计年度。:在控制范围(Controlling Area)中,未为指定的会计年度定义版本 0。如果没有,添加或复制现有年度的设置。

GAVIN 2489

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

CAD制图

CAD制图可以提高设计效率和准确性,并方便文档的存档和交流,是现代工程设计中不可或缺的一部分。·CAD三维开发是指使用计算机程序和工具来创建、编辑和操作三维模型、图形和设计的过程。它在工程、建筑、制造和游戏等领域广泛应用。CAD三维开发可能涉及到复杂的图形算法、性能优化、并行计算等方面的内容,因此需要深入学习和实践,以提高开发的效率和质量。

RZer的博客 1648

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

PyQt5 + HFSS:给你的仿真脚本做个专属GUI界面(零基础搭建指南)

本文详细介绍了如何使用PyQt5为HFSS仿真脚本创建专属GUI界面,适合零基础用户快速上手。通过Python二次开发,实现参数可视化调整、进度实时监控等功能,大幅提升团队协作效率。文章涵盖环境配置、界面设计、HFSS集成到打包部署的全流程,是仿真工程师提升工作效率的实用指南。

weixin_42535720的博客 185

脑机接口(BCI)从原理到开发实战 10|脑控外设:用脑电波控制机械臂/游戏

摘要: 脑机接口(BCI)的“最后一公里”是将分类结果转化为实际动作的关键环节。本文介绍如何通过指令映射、硬件通信和执行反馈实现脑控外设,包括离散/连续控制策略、防抖处理及串口/蓝牙通信方法。通过两个实战案例(运动想象控制机械臂抓取、P300/SSVEP控制游戏)和完整项目(OpenBCI控制小车),演示了从分类标签到设备动作的完整流程,重点涵盖指令生成算法(多数投票)、Python与Arduino的串口通信集成,为BCI系统落地提供实用解决方案。(149字)

小明的博客 765

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

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

doudouqbj的博客 427

大模型复杂问答能力评测框架:从原理到实践

在人工智能领域,大语言模型(LLM)的评估是衡量其实际应用价值的关键环节。其核心原理在于通过系统化的评测框架,对模型的理解、推理、整合与表达能力进行量化分析。传统的NLP基准测试往往侧重于事实性检索或简单推理,难以全面反映模型在应对多跳推理、隐含条件、长上下文整合等复杂现实任务时的真实性能。因此,专门针对复杂问答设计的评测技术应运而生,其价值在于为模型选型、效果优化和瓶颈诊断提供数据驱动的科学依据。该技术广泛应用于需要深度逻辑判断的业务场景,如智能投顾、法律咨询、医疗诊断等。本文聚焦的`tan92hl/Co

weixin_28679635的博客 361

在 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

「PAT乙级真题解析」Basic Level 1034 有理数四则运算 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设给定两个有理数, 要求输出这两个有理数的和、差、积、商。 如果只是这样, 则问题很简单, 但是题设要求输出的每个有理数必须是最简形式. **所以本题的一个重点是如何将有理数转为题设要求的有理数.**

过美好生活,做高效程序员 3129

71、机器人与机器人控制器技术解析

本文深入解析了机器人控制器的通信接口、传感器数据采集与处理以及抓手技术三大核心技术。详细介绍了数字I/O、串行接口、总线系统和以太网等通信方式,探讨了各类传感器在焊接、装配、质量检测等场景中的应用,并阐述了手眼校准与路径校正的关键方法。同时,文章还分析了不同类型抓手的特点及选型设计原则,展示了机器人在现代工业自动化中的高效性与灵活性。通过实际编程示例与流程图,全面呈现了机器人系统的集成与控制逻辑。

gin88的博客 275

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

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

龙哥盟 1155

RK3568笔记十七:LVGL v8.2移植

若该文为原创文章,转载请注明原文出处。本文介绍嵌入式图形库移植到Linux开发板ATK-RK3568上的步骤。

4230

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

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

Yusei_0523的博客 548

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

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万+

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

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

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

crazyhacking的专栏 7343

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

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、付费专栏及课程。

余额充值