C++ part5
为啥大三了课少了一点点,做作业的时间反而多了一大堆堆???
关于protect
只能被本类或者子类的成员函数,或者友元函数访问。
友元函数:
#include <iostream>
#include <vector>
using namespace std;
class A{
public:
A() : f(3){}
friend void get(const A &a); //声明友元函数
private:
int f;
};
void get(const A &a){
cout << a.f << endl;
}
int main() {
A a;
get(a); //3
return 0;
}
C++类内定义引用数据成员
1、不能用默认构造函数初始化,必须提供构造函数来初始化引用成员变量。否则会造成引用未初始化错误。
2、构造函数的形参也必须是引用类型
3、不能在构造函数里初始化,必须在初始化列表中进行初始化。
简称:必须使用构造函数初始化列表初始化。
class A{
public:
A(int &ff) : f(ff){}
private:
int &f;
};
struct和class的区别
struct默认继承权限和访问权限为public,class默认继承权限和访问权限为private。
什么是右值引用,跟左值又有什么区别?
references:
从4行代码看右值引用
nowcoder
解决的问题:
右值引用是C++11中引入的新特性 , 它实现了转移语义和精确传递。它的主要目的有两个方面:
1. 消除两个对象交互时不必要的对象拷贝,节省运算存储资源,提高效率。
2. 能够更简洁明确地定义泛型函数。
概念:
左值:能对表达式取地址、或具名对象/变量。一般指表达式结束后依然存在的持久对象。
右值:不能对表达式取地址,或匿名对象。一般指表达式结束就不再存在的临时对象。
左值右值区别:
1、左值能寻址,右值不能
2、左值能赋值,右值不能
另:
T&& t在发生自动类型推断的时候(如函数模板的类型自动推导,或auto关键字),它是未定的引用类型,如果被一个左值初始化,它就是一个左值;如果它被一个右值初始化,它就是一个右值,它是左值还是右值取决于它的初始化。
常量左值(const int& a = get())引用能够绑定一个右值。
template<typename T>
void get(T &&a){
}
int main() {
int a = 1;
get(a);
get(1);
return 0;
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 数据库服务器 SQL Server 版本升级公告
· 程序员常用高效实用工具推荐,办公效率提升利器!
· C#/.NET/.NET Core技术前沿周刊 | 第 23 期(2025年1.20-1.26)