首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >组件成员C++的getter和setter

组件成员C++的getter和setter
EN

Stack Overflow用户
提问于 2022-06-08 22:40:17
回答 2查看 72关注 0票数 -1

我正在学习C++,对于作为其他对象成员的对象,我在getter和setter方面遇到了一些困难。

我有一个带有int、int、int年份的DateOfBirth类,以及它的适当的getter和setter。我希望有一个DateOfBirth类的实例作为另一个类的私有成员。

容器类中的getter/setter的正确实现是什么?

EN

回答 2

Stack Overflow用户

发布于 2022-06-08 23:02:36

这取决于复制DateOfBirth的成本有多高。由于您只存储了几个int,所以我会像往常一样写一个getter/setter:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const DateOfBirth &GetDate() const {return date;}
void SetDate(DateOfBirth new_date) const {date = new_date;}

但是要记住,没有一个正确的实现,使用什么样的setter取决于您为什么需要它。如果在读取/写入成员时不需要任何自定义逻辑(而且将来也不需要它),则可以使成员公开。

如果这个类的复制成本很高,您可以让一个setter返回一个non引用:DateOfBirth &SetDate() {return date;},但是这严重限制了您可以向setter添加什么逻辑,此时您最好让这个成员公开。

您还可以为单个子成员实现setter。

或者,您可以让"setter“接受一个函数/lambda,该函数/lambda被赋予对成员的非const引用作为参数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void SetDate(auto &&setter) {decltype(setter)(setter)(date);}
// Then:
x.SetDate([](DateOfBirth &date){date = ...;});
票数 0
EN

Stack Overflow用户

发布于 2022-06-08 23:02:43

一种粗糙的方式(与您当前给定的描述相匹配)如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class DateOfBirth 
{
  private:
    int month = 0, day = 0, year = 0;
  public:
    //getters 
    int getMonth() const 
    {
        return month;
    }
    int getDay() const 
    {
        return day ;
    }
    int getYear() const 
    {
        return year;
    }
    //setters
    void setMonth(int pmonth) 
    {
        month = pmonth;
    }
    void setDay(int pday)
    {
        day = pday ;
    }
    void setYear(int pyear)
    {
        year = pyear;
    }
};
class AnotherClas 
{
  DateOfBirth d; 
  public:
    //getter 
    DateOfBirth getDateOfBirth() const 
    {
        return d;
    }
    //setter 
    void setDateOfBirth(int pmonth, int pday, int pyear)
    {
        d.setMonth(pmonth); //set month 
        d.setDay(pday);     //set day 
        d.setYear(pyear);   //set year 
    }
};
int main()
{
    //create instance of another class 
    AnotherClas a; 
    a.setDateOfBirth(10, 2, 3);
    
    //lets confirm by printing 
    std::cout << a.getDateOfBirth().getMonth() << "-" << a.getDateOfBirth().getDay() << "-" << a.getDateOfBirth().getYear() <<std::endl; 
    return 0;
}

演示

上述程序的输出如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
10-2-3
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72555742

复制
相关文章
python querystring encode_querystring
const querystring = require(‘querystring’);
全栈程序员站长
2022/11/01
6800
如何获取云API密钥?
云 API 是腾讯云开放生态的基石。通过云 API,只需少量的代码即可快速操作云产品;在熟练的情况下,使用云 API 完成一些频繁调用的功能可以极大提高效率;除此之外,通过 API 可以组合功能,实现更高级的功能,易于自动化, 易于远程调用, 兼容性强,对系统要求低。以下是具体操作步骤:
腾讯云@移动安全
2019/01/18
82.6K42
如何获取云API密钥?
如何使用 Python 隐藏 API 密钥
博客首发:https://bornforthis.cn/posts/19.html
AI悦创
2022/06/21
2.2K0
如何使用 Python 隐藏 API 密钥
微信商户号 API 密钥、API 证书配置
只是使用商户号的支付功能可以不配置 API 证书,因为 API 证书只有在一些敏感操作中才用到。比如: 企业付款到零钱、公众号中的现金红包、商户号订单退款,也可以理解为商户号往外出钱的操作
很酷的站长
2022/12/28
6.8K0
微信商户号 API 密钥、API 证书配置
querystring模块详解
parse方法还有三个可选参数,分别是分隔符(默认为&),赋值符(默认为=),以及配置对象,配置对象又有两个可选参数,分别是````maxKeys(最多能解析多少个键值对)和decodeURIComponent(用于解码非utf-8编码字符串,默认为querystring.unescape```)。 例如:
用户2936342
2018/08/27
1.1K0
打印列表从尾部到头部
每一组測试案例包括多行,每行一个大于0的整数,代表一个链表的节点。第一行是链表第一个节点的值,依次类推。
全栈程序员站长
2022/07/06
5190
aiohttp 异步http请求-9.ClientSession自定义请求头部
前言 ClientSession是所有客户端 API 操作的核心和主要入口点。会话包含 cookie 存储和连接池,因此 cookie 和连接在同一会话发送的 HTTP 请求之间共享。 自定义请求头部 如果您需要将 HTTP 标头添加到请求中,请将它们传递给 headers 参数。如在请求头部添加"Content-Type": "application/json" headers = { "Content-Type": "application/json" } 完整代码: imp
上海-悠悠
2022/04/27
2.3K0
NodeJS模块研究 - querystring
querystring 是专门用来解析和格式化 URL 的查询字符串 URL 的工具。
心谭博客
2020/04/21
7520
基于Powershell 实现腾讯云 API 调用
虽然腾讯云已经提供了支持多种语言的 SDK,使用起来也非常方便,但是某些环境中没有相关的运行环境使用起来往往带来一些环境准备和合规的成本。PowerShell 作为Windows环境普遍存在脚本环境,如果能够顺利运行云相关API将会非常方便。
用户8856568
2023/01/06
3.2K1
支持QueryString的SiteMapProvider
asp.net 2.0的XmlSiteMapProvider不支持页面的QueryString,下面的代码就是在SiteMapNode上增加了一个属性reliantOn,用来支持QueryString参数
张善友
2022/03/28
3090
通过GiHub 查找 API 密钥、令牌和密码
关键词: Passwords api_key “api keys” authorization_bearer: oauth auth authentication client_secret api_token: “api token” client_id password user_password user_pass passcode client_secret secret password hash OTP user auth
Khan安全团队
2022/05/17
1.1K0
通过GiHub 查找 API 密钥、令牌和密码
微信开发笔记
自动触发服务器脚本,自动打包,更新 1.把github上的项目克隆到本地 2.初始化项目,用node.js搭建环境,是已经过时的项目了 3.安装模块 4.进入微信开发者平台 https://open.weixin.qq.com/ 5.g82.jscook.cn  怎么保存啊? 6.搭建服务? 执行node.js,访问 看端口监听好了没有:在谷歌里 在static里面写一个html静态文件:helloword; 文件是怎样访问到的? 把文件映射到接口中 cat 来查看文件,要是没有,就创建一个 Svon(5
王小婷
2018/06/04
8120
php无法获取到http请求自定义头部问题
而实际开发过程中,可能因为不清楚这个原因而使用_作连接符导致无法获取到自定义的头部。
槽痞
2020/06/23
1.3K0
PHP模拟发送POST请求之一、HTTP协议头部解析
该文介绍了如何通过PHP和JavaScript实现基本的URL伪装,包括处理GET请求和模拟POST请求。通过伪装,可以隐藏请求的URL,绕过一些限制,实现某些绕过登录限制的功能。
枕边书
2018/01/04
1.9K0
腾讯云 API 最佳实践:保护你的密钥
使用腾讯云 API 时,你需要用密钥来签名你的 API 请求。腾讯云接收到你的请求后,会比对你的签名串和实际请求参数。
zqfan
2018/07/18
15.6K2
前端 api 请求缓存方案
来源 | https://github.com/wsafight/personBlog/issues/2
winty
2020/11/06
1.1K0
前端 api 请求缓存方案
API & HTTP 请求调试:Postman
Postman 是一个非常棒的Chrome扩展,提供功能强大的API & HTTP 请求调试。
跟着阿笨一起玩NET
2018/09/20
1.2K0
API & HTTP 请求调试:Postman
点击加载更多

相似问题

如何在请求头部添加API密钥?

169

如何在python请求头部中发送API密钥?

231

API密钥必须作为API-Key头部在每个请求中传递

10

AJAX如何在头部传递api密钥

22

向API (Wrike)请求发送头部

15
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文