- 博客(20)
- 收藏
- 关注
原创 C++中,extern关键字:修饰全局变量
在C++中,extern关键字用于声明一个全局变量或函数,表明该变量或函数的定义在其他文件中。这通常用于在多个文件中共享同一个全局变量或函数。
2025-01-03 13:37:06
242
原创 C++中const关键字:修饰变量、指针、类对象、类中成员函数
在C++中,const关键字用于修饰变量、指针、类对象和类中成员函数,以确保它们的值或行为在定义后不会被修改。
2025-01-03 09:49:35
416
原创 Qt6通过 MATLAB Engine API for C++ 方式来调用MATLAB中的函数
MATLAB提供了一个C++ API,称为MATLAB Engine API。通过这个API,Qt可以直接与MATLAB进行交互。engineengine.h下面是简单的例子测试,在本博主电脑上测试成功。
2025-01-02 15:02:44
1852
原创 继承时,父类的析构函数是否为虚函数?构造函数能不能为虚函数?为什么?
父类析构函数:应该声明为虚函数,以确保在删除基类指针时,能够正确调用派生类的析构函数,避免内存泄漏。构造函数:不能声明为虚函数,因为在对象创建时,编译器需要根据对象的类型自动调用相应的构造函数,而虚函数的实现依赖于对象已经完全创建。
2024-12-31 16:25:46
233
原创 虚函数实现动态多态的原理、虚函数与纯虚函数的区别
虚函数:用于实现动态多态,基类中可以有默认实现,派生类可以选择重写或不重写。纯虚函数:用于定义抽象类,基类中没有默认实现,派生类必须重写。
2024-12-31 15:53:40
405
原创 在C++中野指针的产生与避免
在C++中,野指针(Dangling Pointer)是指指向已被释放或无效内存的指针。类型通常占用4个字节(在大多数现代系统中),因此这行代码申请了4个字节的内存。总结来说,这行代码申请了4个字节的内存,并使用智能指针来确保内存的正确释放。是一个智能指针,它会自动管理内存的生命周期。来释放所指向的内存,从而避免了内存泄漏的风险。类型的内存空间,并将其初始化为值。离开作用域时,它会自动调用。
2024-12-31 14:17:00
131
原创 C++中struct内存对齐
在C和C++中,编译器会根据目标平台的要求对数据进行内存对齐,以提高内存访问效率。内存对齐是指数据存储的地址必须是某个值(通常是数据类型大小的倍数)的整数倍。需要注意的是,修改对齐方式可能会影响内存访问效率,因为非对齐的内存访问可能会比对齐的内存访问慢。编译器会根据特定的规则在结构体成员之间插入填充字节,以确保每个成员都能从其数据类型的自然边界开始存储。同样,为了保证结构体的大小是其成员中最大对齐要求的倍数,编译器会在。的大小将是6字节,而不是默认对齐方式下的12字节。将对齐方式设置为1字节,
2024-12-31 10:17:23
290
原创 C++中struct与class的区别
struct:适用于定义简单的数据结构,成员默认是公有的,默认使用公有继承。class:适用于定义具有复杂行为的类,成员默认是私有的,默认使用私有继承。在实际使用中,可以根据需要选择使用struct或class。如果只是需要一个简单的数据结构,使用struct可能更方便;如果需要定义具有复杂行为的类,使用class可能更合适。
2024-12-31 09:55:04
663
原创 C++与C的区别
总的来说,C++在C语言的基础上增加了许多高级特性,使代码更加模块化、可复用、可维护和高效。但同时,C++的复杂性也更高,学习曲线更陡。选择使用C还是C++取决于具体的项目需求和开发团队的技术背景。
2024-12-31 08:45:09
382
原创 C++中内存分区:全局区、堆区、栈区、常量区、代码区
通过以上代码示例,我们可以看到不同内存区域的特点和用途。了解内存分区有助于更好地管理内存,避免内存泄漏和野指针等问题。这些变量都存储在全局区,并且在程序的不同部分都可以访问。是一个全局静态变量,是一个局部静态变量,
2024-12-30 17:30:38
506
原创 C++中空类有哪些函数?空类的大小?
空类默认包含6个特殊的成员函数:默认构造函数、默认拷贝构造函数、默认析构函数、默认赋值运算符、默认取址运算符和默认取址运算符(const版本)。空类的大小至少为1字节,用于存储对象的地址。小伙伴们又有疑问了,这空类可以拿来干嘛?在代码编写中起到什么作用和意义呢?在C++中,空类(即没有任何成员变量和成员函数的类)虽然看似简单,但在代码编写中却有着重要的作用和意义。二、标记类(Tag Class)空类可以用作标记类,用于标记某个对象或数据结构的类型。
2024-12-30 16:45:26
1748
原创 C++中深拷贝与浅拷贝的区别
浅拷贝:只复制指针,不复制指针指向的内存。原始对象和复制对象共享同一块内存,可能导致程序崩溃或未定义行为。深拷贝:不仅复制指针,还复制指针指向的内存。原始对象和复制对象拥有各自独立的内存,避免了潜在的问题。在实际编程中,如果类中包含动态分配的资源(如指针),通常需要自定义深拷贝构造函数和赋值运算符,以确保对象的正确复制和资源管理。
2024-12-30 15:21:39
436
原创 C++中移动构造函数与拷贝构造函数对比
移动构造函数和拷贝构造函数在C++中都是特殊的成员函数,用于对象的创建和初始化。在Linux系统下使用g++进行编译,结果如下:MyClassdatastd::movevecdataother.dataother.datadataother.datanullptrdata在mainobj1vecobj1obj2obj1obj2obj3obj1obj3obj1通过这个示例,你可以看到移动构造函数和拷贝构造函数在资源管理上的不同行为。
2024-12-30 14:24:09
593
原创 C++中类的构造函数、析构函数、赋值函数、拷贝函数
在C++中,类的构造函数、析构函数、赋值函数和拷贝函数是类的特殊成员函数,它们在对象的创建、销毁和复制过程中起着关键作用。
2024-12-30 14:02:23
1657
原创 C++中类的访问权限:private、protected、 public
在C++中,类的成员函数可以访问类的所有成员,包括私有成员。这是因为成员函数是类的一部分,它们被设计用来操作类的数据。关键字在成员函数声明中的作用是确保函数不会修改类的任何成员。在C++中,类的成员(包括数据成员和成员函数)可以具有不同的访问权限,这些权限通过关键字。这些访问权限控制了类的成员在类的外部和派生类中的可见性和可访问性。的值,而只是返回它。成员函数可以安全地访问类的私有成员,而不会违反封装原则。,是因为它是类的成员函数,并且被声明为。的值,而不需要直接访问私有成员。类的成员函数,并且被声明为。
2024-12-30 11:38:13
435
原创 面向对象编程(OOP)
面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,它将数据和操作数据的函数封装在一起,形成一个对象。OOP的主要思想是将程序中的数据和对数据的操作封装在一个对象中,通过对象之间的交互来实现程序的功能。在Linux系统中编译上述C++代码,你可以使用GCC(GNU Compiler Collection)编译器。如果编译过程中没有错误,你应该会看到程序输出矩形和圆形的面积和周长。:在Linux系统中打开一个终端窗口。这个命令会执行刚刚编译生成的。
2024-12-30 10:34:54
356
原创 指针与引用的区别
提示:以下是本篇文章正文内容,下面案例可供参考在实际使用中,指针和引用各有优缺点,应根据具体情况选择使用。指针更加灵活,但需要注意空指针和内存管理的问题;引用则更加安全和简洁,但使用场景相对有限。
2024-12-27 17:27:41
306
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人