C++笔记——防止混乱

类:

一、构造函数

初始化列表
形式:
class Stu{
public:
int a;
float b;
Stu() : a(12), f(12.3f){}
}
作用:1、可通过数值对数据成员初始化
2、可通过构造函数参数对数据成员进行初始化
3、可通过成员之间相互初始化
在构造函数之后,且顺序无任何影响,只与声明顺序有关

1、数组的初始化列表使用
int a[4];
Stu() : a(){}
此处可以将a[4]全部初始化为0,但是注意只有VS可以这样做。
2、结构体的初始化列表
与普通元素类似,直接定义一个结构体之后,可以用它给相同的结构体直接进行赋值。
3、引用的初始化列表使用
错误示范:
class Stu{
public:
int a;
int& b;
Stu(int c) : a(b), b©{}
}
注意,参数c用完就会释放,所以b的值是不确定的,无效的。
class Stu{
public:
int a;
int& b;
Stu(int& c) : a(b), b©{}
}
4、const的初始化列表
class Stu{
public:
int a;
int& b;
const int e;
Stu(int& c) : a(b), b©, e©{}
}

二、析构函数

1、malloc free与new 和delete的区别
new 和delete会触发构造和析构,而malloc和free不会。
测试代码


#include<iostream>
using namespace std;
 
class Stu
{
public:
	Stu()
	{
		cout << "构造函数" ;
	}
	~Stu()
	{
		cout << "析构函数";
	}
};
int main()
{
	Stu stu;  //触发构造和析构
	Stu * b = new Stu ;		//触发构造
	delete b;			//触发析构
	return 0;
}

三、const和静态成员static

const
形式:void fun() const {};
注意:构造函数和析构函数绝对不可以是常函数
可以使用常函数外数据成员但是不可以修改,常函数内部的不做限制
this指针变更为const 类名*
常对象:const 修饰的对象
常对象只能调用常函数,不能调用普通函数。

static
形式 static int a;
static void fun(){}
注意:static修饰的成员,在构造之前就存在。且所有对象共有。
静态成员类外初始化, int 类名::a = 18;
静态常量整型数据成员可以直接进行初始化:static const int a = 13.12f;其它类型不可以

四、拷贝构造

形式:Stu(const Stu&) 参数是本类的常引用
1、新建一个对象,并将其初始化为同类现有对象
Stu a1(a) || Stu a2 = a || Stu* a4 = new Stu(a)均会调用拷贝构造函数
2、程序生成对象副本时,
函数参数传递对象的值 || 函数返回对象

深拷贝:浅拷贝会出现重复释放空间的问题
指针成员不能直接赋值,要用内存拷贝,memcpy,strcpyd等(拷贝构造中)

5、类之间
class AClass
{
public:
int a;
AClass(int n) :a(n){}
};
class BClass
{
public:
int b;
AClass aObj;
BClass(int m): aObj(m){
b = aObj.a;
}
BClass(const BClass& C) :aObj(b){
b = C.b;
aObj.a = C.aObj.a;
}
};

### 解决 Jetson Nano 在 Ubuntu 下内存不足的问题 Jetson Nano 是一款功能强大的嵌入式计算设备,但在运行某些资源密集型应用程序时可能会遇到内存不足的情况。以下是几种解决方案: #### 1. 调整启动目标以禁用图形界面 如果不需要图形用户界面 (GUI),可以通过调整系统的默认启动目标来减少内存占用。这可以通过更改 systemd 的默认目标实现: ```bash sudo systemctl set-default multi-user.target sudo reboot ``` 此操作会关闭 GUI 并切换到命令行模式,从而释放大量内存资源[^3]。 #### 2. 增加交换空间 增加虚拟内存(即交换空间)可以帮助缓解物理内存不足的问题。具体方法如下: - 创建一个新的交换文件: ```bash sudo fallocate -l 2G /swapfile ``` - 设置权限: ```bash sudo chmod 600 /swapfile ``` - 将其格式化为交换分区: ```bash sudo mkswap /swapfile ``` - 启用交换文件: ```bash sudo swapon /swapfile ``` - 修改 `/etc/fstab` 文件使其永久生效: ```bash echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab ``` 上述步骤将创建一个大小为 2GB 的交换文件,有助于在内存紧张时提供额外的存储支持[^5]。 #### 3. 卸载不必要的软件包 移除未使用的程序和服务可以进一步优化系统性能。例如,卸载桌面环境中的冗余组件或其他不常用的工具: ```bash sudo apt-get remove --purge libreoffice* sudo apt-get autoremove ``` #### 4. 安装必要的依赖项而非全部库 当安装特定开发工具或框架时,仅安装所需的依赖项而不是整个套件能够节省内存和磁盘空间。例如,在配置 ROS 或其他 AI 库时,可以选择性地安装核心模块而不载完整的生态系统[^4]。 #### 5. 使用轻量级操作系统镜像 对于那些希望完全避免复杂配置过程的人群来说,采用官方推荐或者社区维护好的精简版 Linux 发行版本也是一个不错的选择。这些发行版通常已经针对硬件特性进行了高度优化,并且自带较少的服务进程以降低开销[^2]。 通过以上措施之一或多者组合运用即可有效改善 Jetson Nano 运行 Ubuntu 系统期间所面临的 RAM 局限状况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值