1-5 class分类、C++分两部分、inline、初始化列表、const、重载、单例模式、传引用、友元、操作符重载

1 class的经典分类

1)不带指针:Complex(复数)。不带指针的类,多半不用写析构函数。

2)带指针:String

 

2 基于对象和面向对象的一个区别

基于对象:单一对象的设计

面向对象:对象之间有继承、复合、委托的关系

 

3 C++分为两个部分语言部分标准库部分

使用标准库也是非常非常重要的事情。如果不用标准库,不能算是一个合格的C++程序员。

书本推荐

      

 STL:标准库的前身,占80%的标准库。这本书是标准库的源码。

 

4 #include <stdio.h> 变成 #include <cstdio>

 

5 模板及一些说明

 

inline:会比较快。负责函数无法做成inline。最后是否变成inline了?由编译器决定。

初始化列表:re(r):成员(参数),这个是正规的写法,这里叫初始化,而在构造函数大括号内,叫赋值

const:取值函数后加const:类内部的函数分为会改变数据的和不会改变数据的两种。

重载:同名函数(编译器会生成不同名的函数)

 

6 单例设计模式

构造函数:如果在私有区域:不可被外界调用

1)构造函数在private内

2)声明静态getInstance()函数,返回本类的静态引用

3)该函数内创建静态类对象,并返回。

  

7 不声明为const时,会遇到的问题

解析:我要定义一个const复数对象,这个对象就只能调用const函数,如果real()没有被声明为const,就会报错。

 

8 参数传递

 

引用(函数参数里加个&,调用时正常调用):在底部其实是指针,像传指针那么快。

最好所有参数传递都传引用,传1个char只有1个字节,还更少一点呢,这种情况也可以传值

 

9 返回值(也尽量传引用)

__doapl():函数名,do assignment plus....(翻译:赋值的加法)

不可以返回引用:不可以返回栈对象的引用

 

10 友元

 

 C++强调封装,朋友会把封装打开,所以不能太多了

友元:可以直接拿数据

调函数拿数据:会稍微慢一点

 

以上红框,本对象直接调用了另一同类对象的私有成员,为什么不需要通过函数调用?

解释:相同class的各个objects之间互为友元

 

11 操作符重载(是个很大很大的话题)

用plus函数还不如用+来的直接一点,那仿函数呢?

1)成员函数

 

不同的编译器,这个this的位置不一定一样

 

理解一下:返回这个“东西”就行,不需要知道返回是以reference形式接收的,reference速度就快,用value来接收,速度就慢

连加:c1线先加到c2上,c2再加到c3上,所以+=的重载返回值不能是void

2)非成员函数

 

 返回值都不是引用:因为返回的是本地对象,不是参数中的this指针

typename():这个就是建立一个对象

+=定义为成员函数,+定义为全局函数

 

 如上重载了正号,返回值并不是新建立的一个local对象,所以应该可以返回reference!!

 

如上<<不可能写成成员函数,因为<<符号后面的类型千变万化。这个<<符号是特殊情况!(其它符号可能既可以写成成员函数,又可以写成全局函数)

posted @   妖山鬼店  阅读(55)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示