c++补充

   日期:2024-12-21    作者:caijiyuan 浏览:91    移动:http://w.yusign.com/mobile/quote/2510.html

c++补充

友元的成员函数实现

B 类的成员函数 displayB 成为 A 类的友元。因为 A 类声明了 B 类的成员函数为其友元,而 B 类在 A 类之前还没有定义,编译器并不知道 B 的存在。因此,必须先前向声明 B 类

 

友元的全局函数实现

全局函数是不需要加作用域的

 

友元全局函数类内声明和类模板

 

友元全局函数类外声明和类模板

 
 
 

原因是当使用 p2 + p1 这样的语法时,首先编译器会检查 p2 所属的类型 Person,并且优先寻找该类型的成员函数中是否定义了 operator+ 运算符重载。如果找到了成员函数重载,则会调用它,因此调用的是 p2.operator+(p1),即 p2 是调用者,p1 是参数。

但是,如果没有成员函数版本的 operator+ 重载,编译器会再去寻找是否存在合适的全局函数版本 operator+(const Person&, const Person&)。但是例子中的成员函数和全局函数的 + 运算符重载都存在,所以成员函数的优先级更高。

 
 

左移运算符通常用于输出流,比如 std::cout,而输出流不是类的成员

当重载了 operator>> 运算符以处理自定义类型(如自定义的Maker 类)时,原有的 cin 操作对于基本类型(如 int 和 string)仍然有效,但当使用cin 对自定义类型进行输入时,编译器会优先选择自己定义的重载版本。

前置自增的语义是“先增加再使用”,所以返回引用是合适的。
后置自增的特点是“先使用当前值,然后再增加”,因此需要先保存当前对象的状态(即创建一个副本,在执行增加操作后返回这个副本。

 
 

MyArray.h

 

MyArray.c

 

MyArray_main.c

 
 
 
 
 
 

1.函数或类是通用,但是里面的数据类型的多种状态
2.模版有:函数和类

 
 
 
 
 
 

1、局限性

 

2、具体做法
demo1:(不建议 失去模板通用性)

 

demo2:

 
 
 
 
 
 
 
 
 
 
 
 
 
 

类模板的分文件编写出现的问题:
类模板中成员函数创建时机是在调用阶段,导致分文件编写时链接不到
解决:
解决方式1:直接包含.cpp源文件
解决方式2:将声明和实现写到同一个文件中,并更改后缀名为.hpp,hpp是约定的名称,并不是强制

解决方式1的分文件编写
person.h

 

person.c

 

90 类模板的分文件编写

c++补充

 
 
 
 

91 类模板的分文件编写2.cpp

 

对于模板类,编译器必须在编译时看到模板的全部实现,才能根据不同的模板参数生成相应的代码。

模板的二次解析机制:C++ 使用两阶段的模板解析。第一次解析是在模板定义时,只会检查语法而不会实例化模板。第二次解析是在模板被实例化时,这时候编译器需要看到所有模板相关的定义。
C++中有两种函数:全局函数和成员函数,二者区别如下: 全局函数位于对象和类之外,成员函数(也称为成员方法)位于类内
1、类中函数前面加friend的函数; 2、该函数不属于任何对象,其实就是一个全部函数,但是这个全局函数仅仅作用于该类的对象。 3、该函数可以访问该类的私有成员变量

 
 
 
 
 
 
 

vectorv1;//这个调用了std::vector的默认构造函数

std::vector v(10);//这个调用了std::vector的有参构造函数

vector v1 = {1, 2, 3}; // v1 初始化
vector v2 = v1; // 调用拷贝构造函数,v2 是 v1 的拷贝

vector(v)//创建了一个 std::vector 类型的临时对象,并使用已有的对象 v 进行初始化

支持随机访问迭代器的容器
std::vector

动态数组,支持快速随机访问,适合频繁访问和修改元素。
std::deque

双端队列,支持在两端快速插入和删除,同时支持随机访问。
std::array

固定大小的数组,支持随机访问,适合用于已知大小的数组。
std::string

字符串类,也可以视为字符数组,支持随机访问字符。

本文地址:http://w.yusign.com/quote/2510.html    述古往 http://w.yusign.com/static/ , 查看更多

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关行情
推荐行情
点击排行
{
网站首页  |  关于我们  |  联系方式  |  用户协议  |  隐私政策  |  版权声明  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号