首页 > 编程语言 >C++11新特性 - 右值引用 & 移动语义(3)

C++11新特性 - 右值引用 & 移动语义(3)

时间:2024-12-14 09:01:59浏览次数:10  
标签:11 std const 右值 FileHandler C++ char file include

在 C++ 11 之前, 假设有这么一个 FileHandler 类, 实现如下

#include <iostream>
#include <cstdio> // for FILE*
#include <vector>

class FileHandler {
private:
    FILE* file;

    FileHandler(const FileHandler&);
    FileHandler& operator=(const FileHandler&);

public:
    FileHandler(const char* filename, const char* mode) : file(std::fopen(filename, mode)) {
        if (!file) {
            std::perror("Failed to open file");
            throw std::runtime_error("File open error");
        }
    }

    ~FileHandler() {
        if (file) {
            std::fclose(file);
        }
    }

    void write(const char* data) {
        if (file) {
            std::fputs(data, file);
        }
    }

    void flush() {
        if (file) {
            std::fflush(file);
        }
    }
};

int main() {
    try {
        FileHandler fh("test.txt", "w");
        fh.write("Hello, World!\n");
        fh.

标签:11,std,const,右值,FileHandler,C++,char,file,include
From: https://blog.csdn.net/magicworkshop/article/details/144463664

相关文章

  • 代码随想录算法训练营第四十五天|LeetCode115.不同的子序列、LeetCode583.两个字符串
    前言打卡代码随想录算法训练营第49期第四十五天ε(*′・∀・`)з゙首先十分推荐学算法的同学可以先了解一下代码随想录,可以在B站卡哥B站账号、代码随想录官方网站代码随想录了解,卡哥清晰易懂的算法教学让我直接果断关注,也十分有缘和第49期的训练营大家庭一起进步。LeetCode115不......
  • [C++]纯虚函数与虚函数
    1.什么是虚函数?1.1定义虚函数是用virtual关键字声明的成员函数,允许子类覆盖它,并支持运行时多态。1.2特点1.动态绑定(运行时决定调用函数):虚函数在运行时,根据对象的实际类型,而不是指针或引用的类型,决定调用哪个函数。2.基类实现:虚函数在基类中必须有默认实现(即函数体......
  • [C++]类的继承
    一、什么是继承1.定义:        在C++中,继承是一种机制,允许一个类(派生类)继承另一个类(基类)的成员(数据和函数)。继承使得派生类能够直接访问基类的公有和保护成员,同时也可以对这些成员进行扩展或修改。继承是一种“是一个”的关系,它允许一个类从另一个类继承其属性和方......
  • 代码随想录训练营第十六天| 513. 找树左下角的值 112. 路径总和 106.从中序与后序遍历
    513.找树左下角的值 题目链接:513.找树左下角的值-力扣(LeetCode)讲解链接:代码随想录 求最后一行最后一个左子节点的值就是求二叉树深度最大的叶子节点递归:确定递归函数的参数和返回值参数必须有要遍历的树的根节点,还有就是一个int型的变量用来记录最长深度。这里......
  • 2024年12月GESPC++三级真题解析
    一、单选题(每题2分,共30分)题目123456789101112131415答案BDAADBCAADDCDCA1.下列二进制表示的十进制数值分别是()[10000011]原=()[10000011]补=()A.-125,-3B.-3,-125C.-3,-3D.-125,-125【答案】B【考纲知识点】原码和补码的计算及转换【......
  • 在CodeBolcks+Windows API下的C++编程教程——给你的项目中添加头文件和菜单
    0.前言我想通过编写一个完整的游戏程序方式引导读者体验程序设计的全过程。我将采用多种方式编写具有相同效果的应用程序,并通过不同方式形成的代码和实现方法的对比来理解程序开发更深层的知识。了解我编写教程的思路,请参阅体现我最初想法的那篇文章中的“1.编程计划”:学习编程......
  • C++入门
    目录1.C++的第一个程序2.命名空间2.1namespace2.2命名空间的嵌套2.3多文件定义同名namespace默认合并2.3.1Stack.h2.3.2Stack.cpp2.3.3test.cpp2.4使用3.C++输入&输出4.缺省参数4.1全缺省、半缺省4.2多文件缺省参数使用4.2.1Stack.h4.2.2Stack.cpp4.2.3test.c......
  • 软件质量评估模型ISO/IEC 25010:2011
    不定期发布软件开发、测试,学习内容、开发经验。更多内容可访问作者官网 主页|嗨我在这儿 点点关注不迷路!!!本文参考连接国际软件质量评价标准ISO/IEC25010:2011对软件质量的评估有着极为重要的意义,它在ISO/IEC9126质量模型的基础上进行了优化与拓展,精准地描述了8......
  • C/C++实例汇集(1)
    1、用代码判断一个系统是16位系统还是32位系统?以下是几种常见编程语言中判断系统是16位还是32位的代码示例C语言:#include<stdio.h>intmain(){//方法一:利用sizeofif(sizeof(int)==2){printf("16位系统\n");}elseif(sizeof(int)==4){......
  • C++哈希表
    哈希表教程目录哈希表是什么怎么用哈希表插入键值对查找元素删除元素遍历哈希表count检查是否存在某个键怎么用哈希表1.包含头文件首先,你需要包含unordered_map的头文件:#include<unordered_map>2.创建哈希表std::unordered_map<KeyType,ValueType>hashTableKey......