侯捷C++八部曲(一,面向对象)

头文件和类的声明

inline

inline修饰函数,是给编译器的一个建议,到底是否为inline由编译器来决定,inline修饰的函数在使用时是做简单的替换,这样就避免了一些函数栈空间的使用,从能提升效率。从另一种角度看,是替代宏的一种方法。

函数若在class body 内定义完成则自动成为 inline 的候选人

 构造函数放在 private 区

#include <stdio.h>
#include<stdlib.h>class A {
public: static A& getInstance();private:A();A(const A& rhs);
};A& A::getInstance()
{static A a;return a;
}

 A::getInstance();

比如像单例模式,不想让别人随意创建对象

const

const函数表示函数不会改变成员变量内容,不改变成员变量的函数一定要加。如果声明一个const的类对象,表明这个类对象里面的值不能修改,但是类成员函数没有声明成cosnt,这样就会报错。

 COW:copy on write,写时复制,在写的时候才进行复制,没写的时候,共享同一个字符串

charT
operator[] (size_type pos) const {
//不必考虑写时复制的问题,效率高,string[1]
}reference
operator[] (size_type pos){
//要考虑写时复制的问题,string[1] = 't'
}

 当成员函数的const版本和non-const版本同时存在的时候,const 对象只能调用const版本,non-const对象只能调用non-const版本

值传递和引用传递

尽量不要值传递,建议使用引用传递。引用传递底部是一个指针,一个指针四个字节。如果不希望函数修改引用的值,可以加const加以限制。函数返回值也尽量使用引用。
引用传参,传递者无需知道接收者以什么引用形式接收。

友元

一个类想要拿到另一个类的私有成员变量,那么就需要在另一个类中把这个类声明为友元。但是同一个类之间的不同实例能够取到彼此之间的私有成员变量,因为,相同class的各个对象互为友元

  • 数据放在private中
  • 参数传递使用引用
  • 返回值使用引用
  • const,应加尽加

操作符重载

  • 写成成员函数
    所有的非static成员函数都包含一个隐含的 this 指针,返回的是类引用
  • 非成员函数
    不能返回类引用,因为非成员函数操作符重载,一定会在函数方法内新建一个类对象来接收操作结果,如果返回引用,这个新对象在出了函数体之后,生命周期就结束了,引用就是失效了。所以只能返回值。

 参考文章:侯捷C++八部曲笔记(一、面向对象)_Wanncye的博客-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/247330.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TI 毫米波雷达器件中的自校准功能(TI文档)

摘要 TI 的毫米波雷达传感器包括一个内部处理器和硬件架构&#xff0c;支持自校准和监控。校准可确保在温度和工艺变化范围内维持雷达前端的性能。监控可以周期性测量射频/模拟性能参数并检测潜在故障。 本应用手册简要介绍了校准和监控机制&#xff0c;主要侧重于内部…

香港虚拟信用卡如何办理,支持香港apple id

什么是虚拟信用卡&#xff1f; 虚拟信用卡&#xff0c;英文称之为Virtual Credit Card Numbers&#xff0c;就是指没有实体卡片&#xff0c;是基于银行卡上面的BIN码所生成的虚拟账号。通常用于进行网络交易&#xff0c;使用起来很方便&#xff0c;也很安全。 它与实体信用卡…

Redis系列之incr和decr命令是线程安全的?

Redis是一个单线程的服务&#xff0c;所以正常来说redis的命令是会排队执行的。incr/decr命令是redis提供的可以实现递增递减的命令&#xff0c;所以这两个命令也是具有原子性的&#xff1f;是线程安全的&#xff1f;这个也是互联网公司面试的常见题&#xff0c;话不多说&#…

AGI智能新时代,大模型为软件开发带来范式变革

导语 | 人工智能作为新一轮科技革命和产业变革的重要驱动力量&#xff0c;尤其是在当下新一轮 AI 大模型、生成式 AI 浪潮背景下&#xff0c;重视通用人工智能&#xff08;AGI&#xff09;成为行业的共识。在当前&#xff0c; AGI 技术背后的逻辑究竟是怎样的&#xff1f;技术创…

如何使用cpolar内网穿透工具实现公网SSH远程访问Deepin

文章目录 前言1. 开启SSH服务2. Deppin安装Cpolar3. 配置ssh公网地址4. 公网远程SSH连接5. 固定连接SSH公网地址6. SSH固定地址连接测试 前言 Deepin操作系统是一个基于Debian的Linux操作系统&#xff0c;专注于使用者对日常办公、学习、生活和娱乐的操作体验的极致&#xff0…

idea__SpringBoot微服务01——了解Springboot

了解Springboot 一、回顾学习与现在三、回顾什么是Spring三、Spring是如何简化Java开发的四、什么是SpringBoot五、看图————————创作不易&#xff0c;如觉不错&#xff0c;随手点赞&#xff0c;关注&#xff0c;收藏(*&#xffe3;︶&#xffe3;)&#xff0c;谢谢~~ 一…

java常用知识点记忆

类的继承与多态 类的继承不支持多重继承非private 方法才可以被覆盖覆盖的方法要求&#xff0c;子类中的方法的名字&#xff0c;参数列表&#xff0c;返回类型与父类相同方法的重载是在一个类中定义方法名字相同&#xff0c;但是参数列表不同的方法要是在子类中定义了与父类名字…

Kubernetes存储搭建NFS挂载失败处理

搞NFS存储时候发现如下问题&#xff1a; Events:Type Reason Age From Message---- ------ ---- ---- -------Normal Scheduled 5m1s default-scheduler Successful…

WordPress定时文章自动发布技巧

对于许多WordPress站长来说&#xff0c;文章的管理和发布计划往往是一个头疼的问题。随着内容的不断增加&#xff0c;时间表的调整以及发布频率的把握成为了让人焦头烂额的挑战。 一、时间管理难题 对于博客管理员来说&#xff0c;时间管理一直是个令人困扰的问题。在忙碌的生…

Redis Desktop Manager for Mac:高效管理Redis数据的必备工具

Redis是一种快速、可扩展的内存数据库&#xff0c;被广泛应用于缓存、消息队列和实时分析等领域。而Redis Desktop Manager for Mac作为一款专为Mac用户设计的Redis桌面管理工具&#xff0c;为用户提供了高效便捷的方式来管理和操作Redis数据。 首先&#xff0c;Redis Desktop…

ADB命令集锦,一起来学吧

前言 在测试APP时&#xff0c;我们常常会用到adb命令来协助测试&#xff0c;那么adb命令到底是什么&#xff1f;有什么用&#xff1f;怎么用&#xff1f; 今天我就整理了一些工作中常用的adb知识点&#xff0c;希望对大家有所帮助。 ADB学习全攻略 ADB是什么&#xff1f; a…

1.nacos注册与发现及源码注册流程

目录 概述nacos工程案例nacos服务注册案例版本说明本地启动 nacos-server搭建 spring cloud alibaba 最佳实践服务注册案例服务订阅案例 nacos注册源码流程源码关键点技巧 结束 概述 通过本文&#xff0c;学会如何确定项目组件版本(减少可能出现的jar包冲突)&#xff0c;nacos…