赞
踩
strcpy:
memcpy
函数原型:
void* memcpy(void* destination, const void* source, size_t num);
用途:memcpy
用于内存块的复制,即将一段内存块从源地址复制到目标地址,可以复制任意类型的数据,不限于字符串。
memcpy则是根据其第3个参数决定复制的长度
memcpy
需要提供目标缓冲区的大小(即复制的字节数),它不会自动添加 null 终止符,因此需要确保目标缓冲区足够大,以防止溢出。
区别总结:
strcpy
用于字符串复制,自动复制整个字符串,需要注意目标缓冲区的大小。memcpy
用于内存块复制,复制指定大小的内存块,不关心内容是否为字符串,不自动添加 null 终止符。int argc
:代表命令行参数的个数(argument count),包括程序本身的名称。在执行程序时,可以通过命令行传递参数给程序。char *argv[]
:是一个字符指针数组(argument vector),用于存储命令行参数的值。每个元素都是一个指向字符串的指针,每个指针指向一个命令行参数的字符串,第一个参数为程序本身的名称C++标准库是类库和函数的集合
C++标准库的特点:
函数:输入输出流库(iostream)、文件操作库(fstream)、字符串处理库(string)、时间日期库(chrono)、数学库(cmath)、随机数库(random)、动态分配等
类:标准的 C++ I/O 类、String 类、数值类、STL 容器类、STL 算法、STL 函数对象、STL 迭代器、STL 分配器、本地化库、异常处理类、杂项支持库等
将类的构造函数声明为私有(private),有构造函数意味着该类不能在外部被直接实例化,只能在类的内部通过其他方法来创建对象。
示例代码:
class Singleton { public: // 公有的静态成员函数,用于获取类的唯一实例 static Singleton& getInstance() { static Singleton instance; // 在静态成员函数中创建类的唯一实例 return instance; } // 其他成员函数和数据成员... private: // 将构造函数声明为私有,防止类被实例化 Singleton() {} // 可以是默认构造函数或其他自定义的构造函数 // 其他私有成员函数和数据成员... };
在上述示例中,我们将 Singleton
类的构造函数声明为私有,这样外部代码无法直接创建 Singleton
对象。然后,我们在类的内部定义了一个公有的静态成员函数 getInstance()
,用于返回类的唯一实例。这里采用了单例模式的设计,通过静态成员函数获取类的唯一实例,并确保只有一个对象被创建。
将类定义为抽象基类
删除拷贝构造函数(C++11 及以上)
在 C++11 及以上版本中,你可以通过在类的声明中使用 delete
关键字来删除拷贝构造函数和拷贝赋值函数。这样一来,编译器将禁止生成默认的拷贝构造函数,而在试图拷贝对象时会产生编译错误。
class MyClass {
public:
// 删除拷贝构造函数
MyClass(const MyClass&) = delete;
// 其他成员函数和数据成员...
};
私有化拷贝构造函数
某些情况下,为了避免调用拷贝构造函数和拷贝赋值函数,我们需要将他们设置成private,防止被调用。但是类的成员函数和friend函数还是可以调用private函数,如果这个private函数只声明不定义,则会产生一个连接错误。针对上述情况,可以定义一个base类,在base类中将拷贝构造函数和拷贝赋值函数设置成private,那么派生类中编译器将不会自动生成这两个函数,且由于base类中该函数是私有的,因此,派生类将阻止编译器执行相关的操作。
在软件开发中,Debug(调试)模式和 Release(发布)模式是两种常见的构建配置,用于在不同阶段的开发和部署中使用不同的编译选项和优化策略。
Debug 模式:
Release模式:
通常在开发阶段,开发者会使用 Debug 模式来进行调试和测试,以便更容易地定位和解决问题。而在发布阶段,为了提高程序的性能和资源利用率,会使用 Release 模式来编译生成最终的可执行文件或库文件。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。