首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

《Effective C++》读书笔记(1):让自己习惯C++

3、template C++,泛型编程,衍生出模板元编程(各个新标准中逐步完善)。4、STL,包括容器、迭代器、算法与函数对象。...,另一方面预处理后已经消失,编译链接过程中没有其符号信息,出问题时无法定位到它。...最佳处理办法是:对于内置类型必须手动初始化,而对于用户定义的对象,使用对象前将其初始化(责任落在构造函数上)。 构造函数包含成员初值列与函数体。...2、成员初始列的排列顺序应与类中的声明次序一致,因为成员初始化顺序只与后者有关,前者若与后者不一致的话可能导致误解。...class FileSystem{...}; FileSystem& tfs(){ static FileSystem fs; return fs; } class Directory{...}

14230

《Effective C++》读书笔记(一):让自己习惯C++(条款01~04)

很多人在说起C++的时候,都只会说C++是建立C基础上的一个面向对象的语言,而老师会加上一句:C++是一个面向过程同时,也面向对象的语言,因为它包容C。...②初始化列表的初始化顺序是按照成员变量声明时的顺序来的,并非是初始化列表中的顺序!...③跨编译单元的初始化次序问题: 不同编译单元中定义的non-loacl static对象的初始化次序C++没有明确的定义。什么意思呢?...std::size_t numDisks() const; //... }; extern FileSystem tfs;//给用户使用的对象 源码文件B中,调用源码文件A的对象: class...std::size_t numDisks() const; }; FileSystem& tfs() { static FileSystem fs;//首次遇到fs的时候,对它进行初始化

18910
您找到你想要的搜索结果了吗?
是的
没有找到

C++ this指针:用于成员函数中指向调用该函数的对象

C++中this指针是一个指向当前对象的指针。成员函数中,可以使用this指针来访问调用该函数的对象的成员变量和成员函数。...一、定义和使用this指针 this指针是成员函数内部定义的一个常量指针。它存储了当前对象的地址,可以通过它访问当前对象的成员变量和成员函数。...setName函数内部,this指针被用来访问成员变量name。...这种情况下,可以函数内部访问其他对象的成员变量和成员函数。...四、总结 this指针C++中是一个非常重要的概念,可以用来访问调用该函数的对象,作为返回值返回,或者作为函数参数传递。掌握this指针的使用可以帮助我们更好地编写面向对象的程序。

18540

C++最佳实践 | 5. 可移植性及多线程

正确性和脚本 可移植性 明确使用的类型 大多数产生告警的可移植性问题都是因为我们没有注意类型。标准库和数组使用size_t作为索引,标准容器的大小使用size_t类型。...参考: http://www.viva64.com/en/a/0010/ 使用标准库 std::filesystem C++17新增了新的filesystem库,在所有支持的编译器上提供了可移植的文件系统访问能力...std::thread C++11的线程功能能够基于pthread或WinThreads使用。...即使现在的代码不是为了并行化而写,也没有理由将来永远不做并行化。 静态(static)数据 除了作为全局数据之外,静态数据并不总是像期望的那样被构造和析构,跨平台环境中尤其如此。...如果一个成员变量本身是互斥的,那么应该是可变的,这是const成员函数中使用它所必需的。

52520

深入理解 C++ 中的多态与文件操作

C++ 多态多态(Polymorphism)是面向对象编程(OOP)的核心概念之一,它允许对象相同操作下表现出不同的行为。 C++ 中,多态通常通过继承和虚函数来实现。...虚函数: 虚函数是带有 virtual 关键字的成员函数。当调用虚函数时,实际执行的代码将取决于指向的对象的类型。总结多态是面向对象编程中一个强大的工具,它允许您创建更灵活、更可维护的代码。...C++ 文件操作C++ 提供了多种机制来操作文件,包括创建、读取、写入和修改文件。常用的文件操作库包括 fstream 和 。1....示例:创建并写入文件#include #include using namespace std;namespace fs = std::filesystem;...>using namespace std;namespace fs = std::filesystem;int main() { // 创建文件路径 fs::path myFile("myfile.txt

7010

C++17,标准库变化的更多细节

让我们首先来看下之前未提到过的新内容. std::byte 独立类型 std::byte 实现了 C++ 语言定义中的字节概念,他能用于访问对象的原始内存,不同于 char 等字节类型(也可以用于访问对象的原始内存...15行的 std::chrono::system_clock. ftime 的类型为 std::filesystem::file_time_type, 服务器上(译注:作者cppreference.com...(第17行),程序输出却并没有什么变化,这一度困扰了我,因为协调世界时(Coordinated Universal Time (UTC))德国(译注:作者为德国人)与本地时间应该有2个小时的时差,但是后来想到代码是服务器上运行的...,而服务器上的协调世界时与本地时间没有时差,所以程序的输出也就没有变化了....Space info 全局函数 std::filesystem::space 可以返回一个 std::filesystem::space_info 对象,该对象包含了3个成员: capacity, free

65310

C++实现对回收站里的文件进行操作|技术创作特训营第一期

本篇文章主要为大家详细介绍了C++如何使用代码对回收站里的文件进行操作,譬如文件的删除与恢复等。...fAnyOperationsAborted;LPVOID hNameMappings;LPCWSTR lpszProgressTitle;} SHFILEOPSTRUCT, *LPSHFILEOPSTRUCT;成员变量...下面是Boost库中一些常用模块和其功能的简要介绍:1、Boost.Filesystem(文件系统):该模块为C++操作文件系统提供了便捷且跨平台的接口,包括文件路径操作、目录遍历、文件访问等。...这些模块为C++开发者提供了丰富的工具和功能,方便开发高效且可靠的应用程序。...().string() << std::endl; } return 0;}使用Boost库的boost::filesystem::rename函数将文件恢复到原始路径:#include <

24500

学过 C++ 的你,不得不知的这 10 条细节!

阅读 《Effective C++ (第三版本)》 书时做了不少笔记,从中收获了非常多,也明白为什么会书中前言的第一句话会说: 对于书中的「条款」这一词,我更喜欢以「细节」替换,毕竟年轻的我们在打...需要注意的是:我们可以 non-const 成员函数调用 const 成员函数,但是不可以反过来, const 成员函数调用 non-const 成员函数调用,原因是对象有可能因此改动,这会违背了...因为 C++ 规定,对象的成员变量的初始化动作发生在进入构造函数本体之前,构造函数内,都不算是被初始化,而是被赋值。...std::size_t numDisk() const; // 众多成员函数之一 ... }; extern FileSystem tfs; // 预备给其他程序员使用对象 现假设另外一个程序员建立一个...我旧文里《C++ 赋值运算符'='的重载(浅拷贝、深拷贝)》规避这个问题试,就采用的是方式 一,这个方式是不合适的。

69920

蓝桥ROS机器人之现代C++学习笔记第 8 章 文件系统

该库的动机是需要在 C++ 程序中执行可移植的类似脚本的操作。其目的不是与 Python、Perl 或 shell 语言竞争,而是 C++ 已经是首选语言时提供可移植的文件系统操作。...使用是安全的,因为大多数函数检测到错误时都会抛出 C++ 异常,因此不能忽略错误。这对用户来说也很方便,因为它减少了显式检查错误返回代码的需要。...C++ 标准委员会接受了技术报告 2 中包含 Boost.Filesystem 的提案 N1975。...Boost.Filesystem 库提供了几个头文件: 头文件 提供类 basic_path,这是一种 C++ 程序中表示路径的可移植机制。...☞ en.cppreference.com/w/cpp/filesystem 文件系统库  C++ 文件系统库 Filesystem 库提供了对文件系统及其组件(例如路径、常规文件和目录)执行操作的工具

64820

C++实现的代码行数统计器

C++写过多少行,5万还是10万,用来评估熟练度,有点难顶,于是写个代码统计器吧,输入文件夹目录或者代码文件,可以统计所有代码的行数 可以直接编译代码运行程序,控制台输入目录的路径按下回车即可,例如输入...C:\Users\Yezi\Desktop\C++\CodeCounter 也可以终端命令行直接运行编译好的程序,带上参数运行,例如输入 ....\CodeCounter.exe C:\Users\Yezi\Desktop\C++\CodeCounter 思路比较简单,主要是用到了C++17的filesystem库用来解析目录和提取文件后缀,如果路径是个目录就提取子目录项逐个分析...::filesystem::path &path) { // 常见代码文件后缀 static const std::vector extensions...::filesystem::exists(path) == false) { std::cerr << "There is no file " << path << std::endl

3500

4.5 C++ Boost 文件目录操作库

Boost 库是一个由C/C++语言的开发者创建并更新维护的开源类库,其提供了许多功能强大的程序库和工具,用于开发高质量、可移植、高效的C应用程序。...Boost库已被广泛应用于许多不同领域的C++应用程序开发中,如网络应用程序、图像处理、数值计算、多线程应用程序和文件系统处理等。...Boost库出现之前,C++对于文件和目录的操作需要调用底层接口操作,非常不友好,而且不同平台的接口差异也很大,难以移植。...本节中,我们将重点介绍如何使用Path目录类,包括如何创建和初始化Path对象、如何获取和设置路径成员变量、如何查询路径是否存在和创建路径、如何拼接和规范化路径等。...Boost库中的Path目录类提供了一系列便捷的方法来实现路径拼接和追加操作,本节中,我们将重点介绍如何在Boost库中进行路径拼接和追加操作,包括如何使用Path类成员函数来拼接路径、如何使用运算符

32510

4.5 C++ Boost 文件目录操作库

Boost 库是一个由C/C++语言的开发者创建并更新维护的开源类库,其提供了许多功能强大的程序库和工具,用于开发高质量、可移植、高效的C应用程序。...Boost库已被广泛应用于许多不同领域的C++应用程序开发中,如网络应用程序、图像处理、数值计算、多线程应用程序和文件系统处理等。...Boost库出现之前,C++对于文件和目录的操作需要调用底层接口操作,非常不友好,而且不同平台的接口差异也很大,难以移植。...本节中,我们将重点介绍如何使用Path目录类,包括如何创建和初始化Path对象、如何获取和设置路径成员变量、如何查询路径是否存在和创建路径、如何拼接和规范化路径等。...Boost库中的Path目录类提供了一系列便捷的方法来实现路径拼接和追加操作,本节中,我们将重点介绍如何在Boost库中进行路径拼接和追加操作,包括如何使用Path类成员函数来拼接路径、如何使用运算符

29120

C++】继承 ③ ( 继承的一些重要特性 | 子类拥有父类的所有成员 | 多态性 | 子类可以拥有父类没有成员 | 代码示例 )

父类 的 私有成员 , 必须通过 父类的 公有或受保护 的成员函数 访问 父类的 私有成员 ; 子类 不能访问 父类的 私有成员 , 并不代表 子类 中没有 父类的 私有成员 ; 下面的 Parent...callPrivateFun 函数 , 调用 privateFun 私有函数 ; 此时 , 子类中 , 可以通过调用 callPrivateFun 函数 , 间接调用 父类的 privateFun...父类的 私有成员 ; Child c; c.publicFunChild(); // 间接调用父类的 私有成员 c.callPrivateFun(); 2、子类可以拥有父类没有成员...子类 可以 继承自 父类 的 成员变量 和 成员函数 基础上 , 定义 其它的 成员变量 和 成员函数 ; 因此 , 子类 可以 拥有 父类 所没有成员变量 和 成员函数 ; 在下面的代码中...//c2.publicFunChild(); 二、代码示例 ---- 代码示例 : #include "iostream" using namespace std; #include <iostream

37330

c++17好用的新特性总结

结构化绑定是指将array、tuple或struct的成员绑定到一组变量*上的语法,最常用的场景是遍历map/unordered_map时不用再声明一个中间变量了: // pre c++17 for(...+标准称之为名字/别名,这也导致它们不允许被lambda捕获,但是gcc并没有遵循c++标准,所以以下代码gcc可以编译,clang则编译不过。...mutex_; unsigned int value_ = 0; }; std::string_view std::string_view顾名思义是字符串的“视图”,类成员变量包含两个部分:字符串指针和字符串长度...可以参考如下两篇文章: 《C++17,使用 string_view 来避免复制》 《C++17 string_view的高效以及陷阱》 std::file_system 具体可参考《c++ filesystem...需要注意的是,c++17只提供了一个库级别的variant实现,没有对应的模式匹配(Pattern Matching)机制,而最接近的std::visit又缺少编译器的优化支持,所以c++17中std

2.8K10

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券