C++ - 技术教程文章

C++ 文件复制【代码】

1 #include<iostream>2 #include<fstream>3 4void copy(char* src, char* dst);5int main()6{7usingnamespace std;8char src[50] = "E:/test/jdk-8u121-windows-x64.exe";9char dst[50] = "E:\\test\\jdk-8u121-windows-x64_bak.exe"; 10 copy(src, dst); 1112return0; 13} 1415void copy(char* src, char* dst) 16{ 17usingnamespace std; 18 ifstream in(src,ios::binary); 19 ofstream out(dst,ios::binary); 20if (...

搭建Ubuntu下c/c++编译环境【转】

1. 安装Ubuntu。2. 安装gcc 方法一: sudo apt-get install build-essential 安装完了可以执行 gcc--version的命令来查看版本,输出如下: gcc(GCC)4.2.3(Ubuntu4.2.3-2ubuntu7) Copyright(C)2007FreeSoftwareFoundation,Inc. 编译则使用Ubuntu gcc命令。要往下学习首先就得熟悉gcc命令的用法。 Ubuntu gcc命令提供了非常多的命令选项,但...

MATLAB Coder从MATLAB生成C/C++代码步骤

MATLAB Coder可以从MATLAB代码生成独立的、可读性强、可移植的C/C++代码。使用MATLAB Coder产生代码的3个步骤:准备用于产生代码的MATLAB算法;检查MATLAB代码的兼容性(有些matlab代码语句并不能生成c/c++代码);产生最终使用的源代码或MEX。利用MATLAB Coder生成c++代码,并在vs2013中验证:一个简单的例子,两数相乘:1、安装matlab2014a或者更新版本;2、简单生成一个foo.m文件;function c = foo(a, b) %#codegen%This funct...

C++ 多态【代码】【图】

C++的多态性用一句话概括就是:在基类的函数前加上virtual关键字,在派生类中重写该函数,运行时将会根据对象的实际类型来调用相应的函数。如果对象类型是派生类,就调用派生类的函数;如果对象类型是基类,就调用基类的函数。 1:用virtual关键字申明的函数叫做虚函数,虚函数肯定是类的成员函数; 2:存在虚函数的类都有一个一维的虚函数表叫做虚表,类的对象有一个指向虚表开始的虚指针。虚表是和类对应的,虚表指针是和对象对...

C++中的const成员函数

数据成员的值反应了对象在程序运行某个时刻的状态。数据成员值的改变是由于对象处理了一条消息,往往是某个成员函数被调用。但是有的时候我们希望,成员函数仅仅是访问数据成员而不对其值进行修改。所以,对象的成员函数被分成了两类:1. 修改对象状态的成员函数;2. 获取对象状态的成员函数;而const 成员函数就是为第2个功能而设计。尽管,只要我们在成员函数里不修改对象数据成员的值就可以认为这是一个获取对象状态的成员函数,...

C++   类工厂实现动态对象创建【代码】

看了MFC中的动态创建对象后,感觉动态创建对象算是一种技术吧,理论上说算是一种设计模式。其实创建的原理很明了,把对象的类别名称和其构造函数用容器记录下来,在需要的时候给出创建类别查找容器即可创建对象。当然这里我们需要自定义一个全局的函数指针用来指向类别的构造函数。在这里我们使用类工厂模式,在泪工厂中我们定义一个通用构造函数,将函数指针指向它。下面是参考一位网友思路来整理和摸索的代码://通用的函数指针 ...

C++中的虚函数

虚函数是一个类中的成员函数,定义格式为:virtual 返回类型 函数名(参数表).关键字virtual指明该成员函数为虚函数。virtual仅用于类定义中,如虚函数在类外定义,不可加virtual。当某个类的一个类成员函数被定义为虚函数,则由该类派生出来的所有派生类中,该函数始终保持虚函数的特征。当在派生类中重写虚函数时,不必加关键字virtual。但重写时不仅要同名,而且它的参数表和返回类型全部与基类中的虚函数一样,否则联编时出错...

VC++ 中简单操作MP3音乐的方法,小结【代码】

#include <windows.h> #include <stdio.h> #include <mmsystem.h> #include <shellapi.h> #include <AFXCOM_.H> #pragma comment(lib,"winmm.lib") void main() {char str[128]={0}; int i = 0;char buf[128]={0}; MCI_OPEN_PARMS mciOpen;MCIERROR mciError;mciOpen.lpstrDeviceType = "mpegvideo";mciOpen.lpstrElementName = "c://1.mp3"; mciError = mciSendCommand(0,MCI_OPEN,MCI_OPEN_TYPE | MCI_OPEN_ELEMENT,(DWORD)&mciO...

google为什么将爬虫从python移植到C++

这是好几年前Quora上的一个问题,有点过时,但看了之后感觉不错,就总结了一下原文链接:http://www.quora.com/Why-did-Google-move-from-Python-to-C++-for-use-in-its-crawler1.谷歌有强大的C++库支持分布式系统2.C++运行更稳定3.在当下的集群环境中,每一点点小的效率累加起来都带来很大的效益4.发展起来的google并不是将开发效率放在首位,而更注重程序的稳定性5.爬虫的主要瓶颈在于高并发,而python对高并发情形的细节控制不够...

C/C++零基础教程,游戏开发入门

零基础学 C++、VC++开发,观看地址http://edu.ibeifeng.com/view-index-id-523.html零基础学C#基础语法快速开发 观看地址http://edu.ibeifeng.com/view-index-id-527.html零基础学C++游戏开发从入门到精通 观看地址http://edu.ibeifeng.com/view-index-id-528.html零基础学C++语言开发,轻松入门 观看地址http://edu.ibeifeng.com/view-index-id-529.html零基础学C语言之嵌入式开发从入门到精通 观看地址http://edu.ibeifeng.com/v...

在VS2008环境下编写C语言DLL,并在C++和C#项目下调用 (转载)【图】

1、编写DLL a)文件--打开--新建项目--Win32,右侧Win32项目,填写好项目名称,点击“下一步”, 应用程序类型选择:“DLL(D)”,附加选项:空项目(E),然后完成。 b)编写头文件(edrlib.h):#ifdef __cplusplus #define EXPORT extern "C" __declspec (dllexport) #else #define EXPORT __declspec (dllexport) #endif EXPORT void EdrCenterTextA(); EXPORT void EdrCenterTextW(); EXPORT int In...

C++开源代码覆盖率工具OpenCppCoverage介绍(Windows)【代码】【图】

关于代码覆盖率统计工具,Linux平台下,gcc内置支持gcov,通过编译时加参数选项,进行代码插桩,从而实现代码覆盖率。在Windows平台下,早在几年前,我还没找到特别好用又开源的覆盖率工具,所以以前公司是自己实现了一套,使用起来也不是很方便。 最近又遇到同样的问题,不过非常幸运的是,一款开源的Windows平台的C++代码覆盖率工具出现了在我的面前:OpenCppCoverage。 OpenCppCoverage是Windows平台下开源的C++代码覆盖率工具...

C++公有继承、私有继承、保护继承

公有继承(public)、私有继承(private)、保护继承(protected)是常用的三种继承方式。1. 公有继承(public)基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态,而基类的私有成员仍然是私有的,不能被这个派生类的子类所访问。2. 私有继承(private)基类的公有成员和保护成员都作为派生类的私有成员,并且不能被这个派生类的子类所访问。3. 保护继承(protected)基类的所有公有成员和保护成员都成为派生类的保护成员,并...

C++中操作符++的实现【代码】

重载操作符++  ++有两种使用方法,一种a++,一种++a。刚学的时候一脸蒙蔽也不知道这样有何意义,后来得知其中的区别。下面记录一下我的学习记录。a++实现:constintoperator++(int){int temp = a;a=a+1;return temp;//该处返回的是一个值}++a实现:base& operator++(){a+=1;return *this;//返回当前对象} 1、因为值不能为左值,所以a++不能为左值。++a可以为左值。2、再者可以看出,a++返回的是加之前的值temp。++a返回的本对象(...

c++——const【代码】

constint a = 0;int getNumber() const; //位置为()后面,整个函数是const类型的,不可修改。//不是在int前面了,是因为,那里是返回值类型的位置//类中的const成员函数是不能修改类中的成员变量的,但是可以修改自身定义的临时变量 原文:http://www.cnblogs.com/ming-michelle/p/7618051.html

C++使用cin.getline使用例题【代码】【图】

1 #include<iostream>2 #include<cstring>3 #include<stdio.h>4usingnamespace std;5class stu{6private:7char name[32];8char ID[32];9int age; 10int score[4]; 11int avg_score; 12public: 13void getDate(char Name[],char id[],int Age); 14void score_avrg(int score1[],int score2[],int score3[],int score4[]); 15void printfDate(); 16}; 1718void stu::getDate(char Name[],char id[],int Age) 19{ 20 strcpy(name,...

NOIP信息学1068:与指定数字相同的数的个数--信息学一本通(c++)【代码】

时间限制: 1000 ms 内存限制: 65536 KB提交数: 14298 通过数: 10545【题目描述】输出一个整数序列中与指定数字相同的数的个数。输入包含2行:第1行为N和m,表示整数序列的长度(N≤100)和指定的数字;第2行为N个整数,整数之间以一个空格分开。输出为N个数中与m相同的数的个数。【输入】第1行为N和m,表示整数序列的长度(N≤100)和指定的数字, 中间用一个空格分开;第2行为N个整数,整数之间以一个空格分开。【输出】输出为N个数中...

快速排序C++实现

#include<iostream>using namespace std;class quicksort{public:int quicks(int *a,int low,int high){int q=a[low];//q int i=low; int j=high; while(i<j) { while(q<=a[j]&&i<j) { j--; } if(i<j) { swap(a[i++],a[j]); } while(a[i]<=q&&i<j) { i++; } if(i<j) { swap(a[i],a[j--]...

[C++] decltype类型指示符【代码】

有些情况下,我们希望从表达式的类型推断出要定义的变量的类型,但是不想用该表达式的值初始化变量。此时就要用到C++11引入的第二种类型说明符delctype,它的作用就是选择并返回操作数的数据类型。编译器分析表达式并得到它的类型,但不实际计算表达式的值:decltype (size(5)) s = i;‘decltype返回size函数返回值的类型,来声明变量s。decltype处理顶层const和引用的方式和auto有所不同,如果decltype使用的表达式是一个变量,则...

C++ com 组件的使用

// CommonTest.cpp : This file contains the ‘main‘ function. Program execution begins and ends there.// #include <iostream>#include <atlbase.h>#include "mbnapi.h" int main(){ HRESULT hr = CoInitializeEx(NULL, COINIT_MULTITHREADED); if (FAILED(hr)) { return -1; } CComPtr<IMbnInterfaceManager> mbnInterfaceMgr = NULL; hr = CoCreateInstance(CLSID_MbnInterfaceManager,NULL,CLS...

C++ sizeof 与 strlen 小结

1.sizeof 的适用场合(1)sizeof的主要用途是与存储分配和I/O系统那样的例程进行通信;void *malloc(size_t size); size_t fread(void *ptr , size_t size , size_t nmemb , FILE *stream);(2)可以用来查看某种类型对象的内存字节单元大小;(3)动态分配内存,表示初始化字节大小;(4)代替常量表示操作对象的字节大小;(5)Windows 常用专用字段存放某类对象的字节大小,sizeof 方便其类型扩充。2.sizeof 与strlen 的比较siz...

Lua和C++交互 学习记录之五:全局数组交互【代码】

主要内容转载自:子龙山人博客(强烈建议去子龙山人博客完全学习一遍)部分内容查阅自:《Lua 5.3 参考手册》中文版 译者 云风 制作 Kavcc vs2013+lua-5.3.3 1.数组①数组是key值从1开始并连续递增的table。②索引号是从1开始,不是从0开始。 2.既然是table,那当然是可以用上一节的内容进行读写的。lua还提供了一些只针对数组进行操作的API,如下:①LUALIB_API lua_Integer (luaL_len) (lua_State *L, int idx);使用于数组,可得...

C++ 无符号类型的运算对象参与的类型转换

我的主力博客:半亩方塘 当某个运算符的运算对象类型不一致,且其中某一个运算对象是无符号类型时,这个需要进行相应地类型转换,至于类型转换的结果,则 依赖于机器中各个整数类型的相对大小 。当某个运算符的运算对象类型不一致,且其中某一个运算对象是无符号类型时,分为以下几种情况: 当 无符号类型 的运算对象 大于 有符号类型 的运算对象时,则将 有符号类型转换为相应的无符号类型后再进行运算,转换规则见我的博客 C++ 中...

Google C++ Style Guide----作用域

二、作用域1. 命名空间(Namespaces)在.cc 文件中,提倡使用不具名的命名空间(unnamed namespaces,译者注:不具名的 命名空间就像不具名的类一样,似乎被介绍的很少:-()。使用具名命名空间时,其名称可基于项目或路径名称,不要使用 using 指示符。定义:命名空间将全局作用域细分为不同的、具名的作用域,可有效防止全局作用域的命名 冲突。优点:命名空间提供了(可嵌套)命名轴线(name axis,译者注:将命名分割在不同命名...

白话C++系列(5)【代码】

C++内存管理什么是内存管理?思考:内存的本质是什么?---->资源思考:谁掌管内存资源? ---->操作系统思考:我们能做什么? ---->申请/归还申请/归还内存资源就是内存管理C++中如何进行内存的申请和释放?申请 --->使用运算符new释放 --->使用运算符delete即:申请内存:int *p = new int;释放内存: delete p;这样就申请和释放一个内存或是某一种类型的内存思考:如何申请和释放块内存呢?int *arr = new int[10]; //申请了...

C++程序员们,快来写最简洁的单例模式吧【代码】

想必每一位程序员都对设计模式中的单例模式非常的熟悉吧,以往我们用C++实现一个单例模式需要写以下代码: 1class CSingleton2{3private:4 CSingleton() //构造函数是私有的 5 {6 }7static CSingleton *m_pInstance;8public:9static CSingleton * GetInstance() 10 { 11if (m_pInstance == NULL) //判断是否第一次调用12 m_pInstance = new CSingleton(); 13return m_pInstance; 14 } 15 };当然,这份...

C++中输入一组不确定长度的数【代码】

使用cin.peek()判断输入的是否为换行int main() {Solution a;vector<int> b;int c = 0;while(cin.peek() != ‘\n‘){cin >> c;b.push_back(c);}cout << a.singleNumber(b) << endl;return0;}参考C++输入一行数据到数组(个数已知与未知)(评论部分)https://blog.csdn.net/qq_26676945/article/details/83627493原文:https://www.cnblogs.com/QQ2962269558/p/13192738.html

C++笔记(引用)【代码】

引用为对象起了另一个名字,引用类型引用另外一种类型。通过将声明符写成&d的形式来定义引用类型,其中d是声明的变量名:int ival = 1024;int &refVal = ival;//refVal指向ival(是ival的另一个名字)int &refVal2;//报错:引用必须被初始化一般在初始化变量时,初始值会被拷贝到新建的对象中。然而定义引用时,程序会把引用和它的初始值绑定在一起,而不是将初始值拷贝给引用。一旦初始化完成,引用将和它的初始值对象一直绑定在一...

[逼死强迫症 - C&C++设计风格选择.1] : 命名规范【代码】

1.命名规范  本系列的第一篇,命名风格本就是有关艺术审美,没有美与丑的绝对标准,本文难免带有主观选择倾向,但是会尽量保持客观的态度归纳几种主流的命名风格,仅供参考。制定规范是为了方便团队沟通和利于代码维护,虽然并不能符合每个艺术家的胃口。对于独立开发者,花点时间设计自己的编码风格也是有助于提高能力的,至少可以在看到自己代码的时候感觉美美哒~~。本文参考了<Google C++ 风格指南>,<Qt 编码风格>,当然还有...

0713-----C++Primer听课笔记----------类和对象【代码】

1.要求:将一篇文章录入,然后实现查询:a)查询可以输入字符或者字符串b)将包含它们的单词输出c)允许重复d)如果输入查询有空格,当多个处理Ex: 输入ro,应该打印出“microsift”输入”he wr”,则查询两次1.1 不用类实现#include <iostream> #include <string> #include <vector> #include <fstream> #include <stdexcept>usingnamespace std; /**第一个版本 录入一篇文章 查找字符串**/ ifstream &open_file(ifstream &is, cons...