C++ - 技术教程文章
C/C++ Volatile关键词深度剖析(转)【图】
本文转载自博文C/C++ Volatile关键词深度剖析。背景 前几天,发了一条如下的微博 (关于C/C++ Volatile关键词的使用建议): 此微博,引发了朋友们的大量讨论:赞同者有之;批评者有之;当然,更多的朋友,是希望我能更详细的解读C/C++ Volatile关键词,来佐证我的微博观点。而这,正是我写这篇博文的初衷:本文,将详细分析C/C++ Volatile关键词的功能 (有多种功能)、Volatile关键词在多线程编程中存在的问题、Volatile关键词...
一个C++继承、虚函数和多态性的实例代码
#include <iostream> #include <string>using namespace std;namespace Animals {class Dog {private:string name;public:Dog(string name) : name(name) {}Dog() : name(NULL) {}virtual void bark() {cout << "Baseclass: Hi, " << name << endl;}string getName() {return name;}void setV(string aname) {name = aname;}};class SDog : public Dog {public:SDog(string name) : Dog(name){}virtual void bark() {Dog::bark();c...
split 实现(c++ string)【代码】
#include <iostream> #include <vector>size_t split(std::string &src, std::vector<std::string> *tokens, std::string sep) {size_t last= 0;size_t index = src.find(sep, last);size_t length = src.size();while(index != std::string::npos){tokens->push_back(src.substr(last, index-last));last = index + 1;index = src.find(sep, last);}if(length - last > 0){tokens->push_back(src.substr(last, length-last));}ret...
C++ abs() and std::abs()
记录一个错误,这个错误导致我在服务器集群上浪费了四天的时间,计算出一堆毫无意义的结果。 在某些编译器环境下,在不使用using space std;的情况下,std::abs() 和 abs()的行为有可能不同。 std::abs()包括std::abs(int), std::abs(float), std::abs(long long)等,而abs()有可能只有abs(int)一种形式,导致abs(float)返回的值永远为0。 原文:https://www.cnblogs.com/I-AM-DUMBASS/p/14769926.html
C++Review19_类的构造、析构、赋值函数
类的构造、析构和赋值函数是每个类最基本的函数。每个类只有一个析构、赋值函数;可以有多个构造函数。例如对于类A,如果没有编写上述函数,C++编译器将自动为类产生四个缺省的函数;A(void); //缺省的无参数构造函数A(const A &a); //缺省的拷贝构造函数~A(void); //缺省的析构函数A & operate = (const A &a); //缺省的赋值函数...
C++中delete this【代码】
Is it legal (and moral) for a member function to say delete this? As long as you’re careful, it’s okay (not evil) for an object to commit suicide (delete this).Here’s how I define “careful”:You must be absolutely 100% positively sure that this object was allocated via new (not by new[], nor by placement new, nor a local object on the stack, nor a namespace-scope / global, nor a member of ano...
C++ primer 第十二章
在类内部定义的函数默认为inline函数后面加const,不能改变操作对象的数据成员,const必须在定义和声明的时候都存在,否则会出现编译错误类和结构体,还有枚举是怎么实现的,内存是如何存储的,这是个大问题?因为只有当类定义体完成后才能定义类,因此类不能具有自身类型的数据与成员,然而只要类名一出现就可以认为该类已经声明,因此类的成员可以是指向自身类型的指针或者引用 关于构造函数与析构函数,其实有一堆问题要问:1.所...
C++向控制台输出带颜色的字体
#include <iostream> using namespace std; #define RESET "\033[0m" #define BLACK "\033[30m" /* Black */ #define RED "\033[31m" /* Red */ #define GREEN "\033[32m" /* Green */ #define YELLOW "\033[33m" /* Yellow */ #define BLUE "\033[34m" /* Blue */ #define MAGENTA "\033[35m" /* Magenta */ #define CYAN "\033[36m" /* Cyan */ #define WHITE "\033[37m" /* White */ #define BOLDBLACK "\033[1m\033[30m" /* Bo...
C++typedef struct和struct的区别
#include "pch.h" #include struct struct1 {int a;char b;char* c; }test1;//定义结构体变量typedef struct struct2{int a;char b;char* c;}test2;//定义结构体类型int main() {test1.a = 10;test2 *t2=new test2();t2->a = 20;}原文:https://www.cnblogs.com/tsh292278/p/11088582.html
《C++编程思想》 第九章 命 名 控 制 (知识点+习题+解答)【图】
一.相关知识点 那些通常放在头文件里的名字,像常量、内联函数(inline function),在缺省情况下都是内部连接的(当然常量只有在C + +中缺省情况下是内部连接的,在 C中它缺省为外部连接)。注意连接只引用那些在连接/装载期间有地址的成员,因此类声明和局部变量并没有连接。名字空间的产生与一个类的产生非常相似: namespace MyLib{ //Declarations } 这就产生了一个新的名字空间,其中包含了各种声明.namespace与class、...
c++ 的整形字面值和如何确定常量类型【代码】
#include <iostream> using namespace std; int main() { //整形//short至少是16bit//int至少与short一样,这里是32bit//long至少是32bit,至少与int一样长//longlong 至少是64,至少与long一样长//c++ 通过数字后边的字母来识别常量类型cout << "c++通过数字后边的字母识别常量类型" << endl;//数字后边加L或者l,意思这是个long类型long lValue = 10l;cout << "long lValue 10L :" << lValue <<endl;//数字后边加U或者u,标志这是...
Effective C++ 条款27【代码】
尽量少做转型动作尽量少做转型动作有什么目的?很明显无非就是提高程序的稳定性,提高程序的执行效率。 那么,有哪些转型方式?每种方式都有什么弱点? 这是我们本节学习的重点。 C++有四种转型:const_cast<T>(expression) dynamic_cast<T>(expression) reinterpret_cast<T>(expression) static_cast<T>(expression)每种转型的作用如下: 1.const_cast通常被用来将对象的常量特性转除(cast away the constness)。它也是唯一由...
栈的实现——c++实现【代码】
栈(stack),是一种线性存储结构,它有以下几个特点: (01) 栈中数据是按照"后进先出(LIFO, Last In First Out)"方式进出栈的。 (02) 向栈中添加/删除数据时,只能从栈顶进行操作。栈通常包括的三种操作:push、peek、pop。 push -- 向栈中添加元素。 peek -- 返回栈顶元素。 pop -- 返回并删除栈顶元素的操作。 C++的STL中本身就包含了stack类,基本上该stack类就能满足我们的需求,所以很少需要我们自己来实现...
vs code配置c/c++调试环境+mingw+win10【代码】【图】
参考博客:https://blog.csdn.net/bat67/article/details/76095813下载VScode和mingw和环境变量的配置 请参考上述的博客附上我的task.json launch.json c_cpp_properties.json 文件的配置:c_cpp_properties.json {"configurations": [{"name": "Win32","includePath": ["${workspaceFolder}"],"defines": ["_DEBUG","UNICODE","_UNICODE"],"compilerPath": "C:\\MinGW\\bin\\gcc.exe",//按照自己放的位置 填写"cStandard": "c11...
c++模板类学习简单
1、模板的概念我们已经学过重载(Overloading),对重载函数而言,C++的检查机制能通过函数参数的不同及所属类的不同。正确的调用重载函数。例如,为求两个数的最大值,我们定义MAX()函数需要对不同的数据类型分别定义不同重载(Overload)版本。//函数1.int max(int x,int y) { return(x>y)?x:y ; }//函数2. float max( float x,float y){ return (x>y)? x:y ; }//函数3. double max(double x,double y) { return (x>y)? x:y ; }但如...
神经网络原理及其c++实现【代码】【图】
1引言数字识别是模式识别领域 中的一个重要分支,数字识别一般通过特征匹配及特征判别的传统方法进行处理。特征匹配通常适用于规范化的印刷体字符的识别,而 特征判别多用于手写字符识别,这些方法还处于探索阶段,识别率还比较低。随着神经网络技术的飞速发展,其本身具有的高度并行性、较强的自组织能力和容错性、较好抑制噪声干扰能力等特点,为快速准确地进行数字识别开辟了新的途径。目前,对于指针式表而言,可以根据二值化后的指针指...
C++ 选择排序【代码】
信息学中排序是一个重要的技能,排序算法的种类也丰富多样,而排序就是对于一个无序数组让其变得如何有序的过程。而排序中最简单、也是最基础的一种算法也就是选择排序。例题洛谷1177 排序题目描述 将读入的 N 个数从小到大排序后输出。输入格式 第 1 行为一个正整数 N。 第 2 行包含 N 个空格隔开的正整数 a[i],为你需要进行排序的数,数据保证了a[i]不超过10^9。 ? 输出格式 将给定的 N个数从小到大输出,数之间用空格隔开。输入...
C++程序设计实践指导1.12数组中数据线性变换改写要求实现【代码】
改写要求1:分别用指针pa、pb代替数组改写要求2:从键盘输入data元素 元素个数任意,输入0结束#include <cstdlib> #include <iostream>usingnamespace std; class DATA {double *pa,*pb;double max,min;double new_max,new_min;int length;public:DATA(double a1[],double x,double y,int len){int i;length=len;pa=newdouble[len];pb=newdouble[len];for(i=0;i<length;i++)pa[i]=a1[i];new_max=x;new_min=y;max=min=pa[0];for(i=0...
LeetCode - 413. Arithmetic Slices - 含中文题意解释 - O(n) - ( C++ ) - 解题报告【代码】
1.题目大意A sequence of number is called arithmetic if it consists of at least three elements and if the difference between any two consecutive elements is the same.For example, these are arithmetic sequence:1, 3, 5, 7, 9 7, 7, 7, 7 3, -1, -5, -9The following sequence is not arithmetic.1, 1, 2, 5, 7A zero-indexed array A consisting of N numbers is given. A slice of that array is any pair of intege...
设计模式——观察者模式(C++实现)【代码】【图】
1 #include <iostream>2 #include <vector>3 #include <algorithm>4 #include <iterator>5 #include <string>6 7usingnamespace std;8 9class STSubject; 1011//观察者12class STObserver 13{ 14public: 15virtualvoid Update() = 0; 16}; 1718class STConcreteObserverA: public STObserver 19{ 20public: 21virtualvoid Update() 22 { 23 cout<< "ConcreteObserverA Get Subject: "<< endl; 24 } ...
GCC编译C/C++程序过程【代码】【图】
GCC编译C/C++程序过程GCC 编译器并未提供给用户可用鼠标点击的界面窗口,要想调用 GCC 编译器编译 C 或者 C++ 程序,只能通过执行相应的 gcc 或者 g++ 指令。实际上,C 或者 C++ 程序从源代码生成可执行程序的过程,需经历 4 个过程,分别是预处理、编译、汇编和链接。同样,使用 GCC 编译器编译 C 或者 C++ 程序,也必须要经历这 4 个过程。但考虑在实际使用中,用户可能并不关心程序的执行结果,只想快速得到最终的可执行程序,因...
Boost.Asio c++ 网络编程翻译(21)【代码】
同步VS异步Boost.Asio的作者做了一个很惊艳的工作:它可以让你在同步和异步中自由选择,从而更好的适应你的应用。在之前的章节中,我们学习了每种类型应用的框架,比如同步客户端,同步服务端,异步客户端,异步服务端。每一个你都可以作为你应用的基础。如果要更加深入地学习各种类型应用的细节,请继续。混合同步异步编程Boost.Asio库允许你进行同步和异步的混合编程。我个人认为这是一个坏主意,但是Boost.Asio(就像C++一样)在...
文件流的处理 C C++【代码】【图】
C:借鉴C 文件操作库函数总结eg:#include <fstream> #include <iostream> #include <cstdio>usingnamespace std;int main(){freopen("D:\\input.in","r",stdin);freopen("D:\\output.out","w",stdout);。。。//直接使用scanf printf等标准函数即可return0; } C++:原文:http://www.cnblogs.com/jiu0821/p/5186244.html
主要C++流派,看看你是哪一流
1. 经典C++流:类是核心,例程多用C Runtime的,很少用模版,一般是正统教育的结果。2. 古典C流:基本上当C用,偶尔用用对象,不使用异常,喜欢怀旧。3. MFC流:秉承MFC的风格,主要使用MFC/ATL对象和Win32 API,不喜欢STL,用很多的宏把IDE的语法提示模块折磨到崩溃。4. Portable流:以C Runtime和STL为主要工具,使用类和模版,不跨平台毋宁死。5. Functional流:以模版和STL为主要武器,大量使用函数式语言的设计方法,并号称这...
C++ 类包含关系Demo 笔记【图】
is-a关系 类包含关系构造函数 复制构造函数 重载赋值操作符 析构函数动态内存空间分配和释放 new delete操作static 数据成员友元函数 重载输入>>和输出<<操作符#include<iostream> #include <windows.h> using namespace std;class person { private:char *name;int age; public:person(){ //class memeber has default value is necessary (or error may occur in person& operator=(const person &ps) delete [] name )cout <...
windows c++ 流读取文件长度 ios::in ios::binary【代码】【图】
问题描述: 当用ios::in模式打开文件时,使用seekg和tellg读取文件的长度,将读取文件内容输出到控制台,发现乱码。 1int _tmain(int argc, _TCHAR* argv[])2{3usingnamespace std;4 ifstream stream("F:\\WorkSpace\\StreamDemo\\Debug\\abc.txt", ios::in);5if(!stream)6 cerr << "Open failed" << endl;7 stream.seekg(0, ios::end);8int len = stream.tellg();9 stream.seekg(0, ios::beg); 10char* bu...
《Effective C++》笔记:Tips09-Tips12【代码】【图】
Tips09:绝不在构造和析构过程中调用virtual函数PS:本人觉得,应该改成不要在基类的构造和析构中调用virtual函数一、如果在基类的构造函数中调用virtual函数,调用谁的?class Transaction { public:Transaction(void){logTransaction();}virtual ~Transaction(void){}virtual void logTransaction() const = 0; };class BuyTransaction :public Transaction{ public:BuyTransaction(void){}~BuyTransaction(void){}void logTrans...
1000道C语言和C++语言的练习题及答案 #0000-0050
汇集1000道C语言和C++语言的练习题 (例题、笔试题、编程题、算法设计题),由我亲自配上答案(点此查看)。 语法题我就不出了,那个没意思,看书就可以了。本贴汇集50题 (0000-0050),持续更新...0001. 抽签题 从10个数中随机抽取5个数。(相当于双色球抽签问题)0002. 插入排序 已有10个按增序排列好的整数1,3,5,7,9,11,13,15,17,19。要求把一个整数n插到数组中,保持增序排列。0003. 数学公式类计算题 已经圆柱体的底半...
白话C++系列(8)【代码】【图】
属性封装的艺术数据的封装下面看一个例子,例子中定义了一个学生的类,类中含有两个数据成员,一个是姓名,一个是年龄上面的代码给人一种相当亲切,有一种似曾相识的感觉,那是因为之前我们一直都是这么用的,而且用的也很爽。但是,这样用是有问题的,最大的问题是它违背了面向对象的知道思想。那么面向对象的基本思想是什么呢?面向对象的核心就是以对象为中心,具体来说,就是要以谁做什么来表达程序的逻辑,体现在代码层面上,...
C++ Programming with TDD之一:GMOCK框架简介【代码】【图】
所谓测试驱动开发,英文全称Test-Driven Development,简称TDD,是一种不同于传统软件开发流程的新型的开发方法。就是在明确要开发某个功能后,首先思考如何对这个功能进行测试,并完成测试代码的编写,然后编写相关的代码满足这些测试用例。然后循环进行添加其他功能,直到完成全部功能的开发。Google Mock的设计灵感来源于jMock和EasyMock,它的作用是帮你快速地做出一个接口的仿制品。如果你的设计依赖其它的类,而这些类还没...