cpp
文章平均质量分 76
缄默0603
这个作者很懒,什么都没留下…
展开
-
std::thread的使用
说到多线程编程,就不得不提并行和并发,多线程是实现并发和并行的一种手段。并行是指两个或多个独立的操作同时进行。并发是指一个时间段内执行多个操作。在单核时代,多个线程是并发的,在一个时间段内轮流执行;在多核时代,多个线程可以实现真正的并行,在多核上真正独立的并行执行。例如现在常见的4核4线程可以并行4个线程;4核8线程则使用了超线程技术,把一个物理核模拟为2个逻辑核心,可以并行8个线程。C++11之前,window和linux平台分别有各自的多线程标准,使用C++编写的多线程往往是依赖于特定平台的。转载 2023-06-02 11:23:27 · 950 阅读 · 1 评论 -
std::copy算法
标准库提供的back_inserter模板函数很方便,因为它为container返回一个back_insert_iterator迭代器,这样,复制的元素都被追加到container的末尾了。使用的范围是[ first,last) ,它包含第一个和最后一个之间的所有元素,包括由 first 指向的元素,但不包括由 last 指向的元素。这些范围不应该以这样的方式重叠,即结果指向范围[ first,last)中的一个元素。到目标序列中的初始位置。函数返回目标范围末尾的迭代器(它指向最后复制的元素之后的元素)。翻译 2023-05-23 20:11:09 · 135 阅读 · 0 评论 -
前置声明与C++头文件互相包含导致的error: ‘xxx‘ does not name a type问题
,在b.h中也进行类似的修改。当然,这么做是有前提的:在A类中的成员只有B类的指针,而不能有B类的变量;同时不能在A类头文件中访问B类的成员或成员函数。报错为“error: ‘B’ does not name a type”,就是因为在A类中使用B *b之前没有声明或定义B类,如果在第一行加上一句前置声明(forward declaration)“class B;忽略以“#”开头的行,我们发现它现在和开头的那个源文件几乎是一样的,只是类的顺序交换了,因此出错原因和开头的那个源文件是一样的。转载 2023-05-17 11:25:05 · 804 阅读 · 1 评论 -
C++中前置声明介绍
前置声明是指对类、函数、模板或者结构体进行声明,仅仅是声明,不包含相关具体的定义。在很多场合我们可以用前置声明来代替#include语句。类的前置声明只是告诉编译器这是一个类型,但无法告知类型的大小,成员等具体内容。在未提供完整的类之前,不能定义该类的对象,也不能在内联成员函数中使用该类的对象。而头文件则一一告之。前置声明,也称前向声明(forward declaration)。转载 2023-05-17 11:20:34 · 1881 阅读 · 0 评论 -
C++中的野指针
指的是不指向任何合法的对象的指针。原创 2022-12-06 20:03:53 · 793 阅读 · 0 评论 -
如何学习C++
我的blog以前很长一段时间关注的都是C++中的技术&细节,乃至于读者和应者都寥寥。然而5月份的时候写的一篇“你应当如何学习C++”,阅读量却达到了3万多,在blog上所有文章中却是最高的(且远远超过了第二位);评论数目也有一百多。为什么独独这篇能够激起这么多的回应,想必是国内的C++社群被C++压抑太久,或者,严格来说,是被C++的教育方式压抑太久。实际上,不管是在各大国内论坛上,还是在comp.lang.c++.moderated这样的国际C++论坛上,乃至于在douban上的小组内,有心者都会发现,对转载 2022-11-14 17:13:38 · 139 阅读 · 0 评论 -
C++中的文件输入/输出
非常详细的一篇关于C++中的文件输入/输出的文章,适合看自己需要的部分,或者当作查询资料;不必要看懂所有细节原创 2022-11-08 16:30:23 · 9958 阅读 · 7 评论 -
C++中的多态
类继承的一个关键特性是指向派生类的指针与指向其基类的指针是类型兼容的。多态性是利用这个简单但强大和多用途特性的艺术。原创 2022-11-06 00:51:45 · 392 阅读 · 0 评论 -
C++中的继承
原则上,公共派生类继承基类的每个成员,除了:1.它的构造函数和析构函数,2.其赋值运算符成员(运算符 =),3.它的友元,4.它的私有成员原创 2022-11-05 23:40:52 · 399 阅读 · 0 评论 -
C/C++ 中的指针[非常全面]
关于指针及相关知识,这一篇就够了原创 2022-10-26 02:11:28 · 1685 阅读 · 6 评论 -
CPlusPlus[Tutorials]:文件重定向
件(在UNIX 中是addItems ),则上述命令会从一个名为 infile 的文件读取数据,并将输出结果写人到一个名为outfile 的文件中,两个文件都位于当前目录中。假定$是操作系统提示符,我们的加法程序已经编译为名为 addItems.exe 的可执行文。大多数探作系统支持文件重定向,这种机制允许我们将标准输人和标准输出与命名文件。可以在当前目录新建一个文本文件num.txt,其中保存着3 6 9 数字。当你测试程序时,反复从键盘敲入这些数据作为程序的输入,是非常乏味的。原创 2022-10-17 23:06:20 · 97 阅读 · 0 评论 -
虚析构函数
只引发了 基类的析构函数被调用,没有引发派生类的析构函数被调用。这是因为该语句是静态联编的,编译器编译到此时,不可能知道此时 b 到底指向哪个类型的对象,它只根据 b 的类型是 Base * 来决定应该调用 Base 类的析构函数。实际上,这也是多态。为了在这种情况下实现多态,C++规定,需要将基类的析构函数声明为虚函数,即虚析构函数。1.若普通析构函数的基类指针b指向派生类,在delete b;可见, 派生类Derived的析构函数并未调用起来,如果派生类中有分配内存就会造成内存泄漏;原创 2022-10-14 15:27:50 · 282 阅读 · 0 评论 -
函数指针与回调函数
只不过把这个声明中的函数名变为一个指针即可(只留参数的类型int,int):int (*pFunc) (int ,int );你到一个商店买东西,刚好你要的东西没有货,于是你在店员那里留下了你的电话,过了几天店里有货了,店员就打了你的电话,然后你接到电话后就到店里去取了货。在这个例子里,你的电话号码就叫回调函数,你把电话留给店员就叫登记回调函数,店里后来有货了叫做触发了回调关联的事件,店员给你打电话叫做调用回调函数,你到店里去取货叫做响应回调事件。回调函数就是,函数指针作为某一个函数的参数;原创 2022-10-14 01:41:48 · 327 阅读 · 0 评论 -
c++ 运算符优先级表格
【代码】c++ 运算符优先级表格。原创 2022-10-13 15:37:32 · 188 阅读 · 0 评论 -
CPlusPlus[Tutorials]:变量,类型,及初始化
1. 字符类型,2.整数类型(无符号与有符号),3.浮点类型 , 4.布尔类型 , 5.空类型, 6.空指针。原创 2022-10-12 19:04:17 · 266 阅读 · 0 评论 -
c/c++中main函数中argc,argv有什么作用呢?
main函数中int argc, char** argv 这两个参数有什么作用呢?不妨编一段代码测试以下#include<iostream>#include "hello.h"using namespace std;int main( int argc, char** argv ){ int i; for(i=0; i<argc; i++) { printf("number %d is %s\n",i,argv[i]); }原创 2021-11-28 20:49:54 · 562 阅读 · 0 评论