![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
UmdCoding
这个作者很懒,什么都没留下…
展开
-
C++:error C4996: 'std::_Uninitialized_copy0': Function call with parameters that may be unsafe
错误调试:c:\program files (x86)\microsoft visual studio 12.0\vc\include\xmemory(348): error C4996: 'std::_Uninitialized_copy0': Function call with parameters that may be unsafe - this call relies on the ca原创 2016-08-03 22:14:56 · 4644 阅读 · 0 评论 -
C++理解拷贝控制成员和构造函数
首先通过例子分析:构造函数,拷贝构造函数,拷贝赋值运算符,析构函数:何时调用?// 定义类Testclass Test{public: Test(); //默认构造函数 ,由于有其他的构造函数,所以编译器不会合成构造函数; Test(const Test &){ std::cout << "Test(const Test &)" << std::endl; } //拷贝构造函原创 2016-08-02 16:20:26 · 525 阅读 · 0 评论 -
C++注意防止指针指向空
例子static size_t sn;class Employee{private: //std::string name; std::shared_ptr<std::string>name; size_t ID = ++sn; //每次生成唯一IDpublic: Employee() = default; //默认构造函数 Employee(cons原创 2016-08-02 19:10:27 · 1225 阅读 · 0 评论 -
C++运算符的重载
定义SaleData类#ifndef _SALEDATA__#define _SALEDATA__#include <string>#include <iostream>class SaleData{ //数据成员private: std::string bookNo; unsigned sold = 0; double revenue = 0.0; //原创 2016-08-06 10:59:39 · 344 阅读 · 0 评论 -
C++ 拷贝控制和资源管理
参考:C++primer P452 在类中分配动态内存资源以及管理时,分为两种情况: 1. 在类中使用智能指针作为数据成员指向分配的动态内存;推荐使用 2. 在类中使用普通指针作为数据成员指向分配的动态内存 注意:在使用第二种情况时,要自定义析构函数—>自定义拷贝构造函数,自定义拷贝复制运算符(原因:参考C++primer P447)定义这些拷贝控制成员时,分两种情况: 1.使类的行为像原创 2016-08-02 21:15:13 · 718 阅读 · 0 评论 -
C++:string 的substr()和assign()
参考 C++:primer P322s.substr(pos,n) 返回一个字符串,包含s中从pos开始的n个字符的拷贝,pos的默认值为0,n的默认值为s.size()-pos,即拷贝从pos开始的所有字符注意:如果开始位置加上计数值大于string的大小,则substr会调整计数值,只拷贝到string的末尾;assign()函数:(重载多个) basic_string &assign( co原创 2016-08-06 12:07:22 · 517 阅读 · 0 评论 -
C++:重载函数运算符
编写一个类似PrintString的类,令其从istream中读取一行输入,然后返回一个表示我们所读内容的string。如果读取失败,返回空stringclass PrintString{public: PrintString(std::istream &i = std::cin) :is(i){} std::string operator()()const;private:原创 2016-08-08 13:42:48 · 289 阅读 · 0 评论 -
C++:可调用对象与function
编写一个简单的桌面计算器使其能处理二元运算class Divide{public: int operator()(int a, int b)const{ return a / b; }};//普通函数int Add(int a, int b){ return a + b; }int mult(int a, int b){ return a*b; }//命名lambda函数对象原创 2016-08-08 22:55:25 · 405 阅读 · 0 评论 -
C++:简单的继承理解
#ifndef _QUOTE__#define _QUOTE__#include <string>//定义基类class Quote{ public: Quote() = default; //默认构造函数 Quote(const std::string &book, double sales_price) :bookNo(book), price(sales_price)原创 2016-08-09 15:43:33 · 428 阅读 · 0 评论 -
C语言指针总结
http://www.cnblogs.com/jyaray/archive/2010/06/03/1751056.htmlC语言中的精华是什么,答曰指针,这也是C语言中唯一的难点。C是对底层操作非常方便的语言,而底层操作中用到最多的就是指针,以后从事嵌入式开发的朋友们,指针将陪伴我们终身。本文将从八个常见的方面来透视C语言中的指针,当然,还有其他没有具体提到的方面,像指针表达式、指针安全等问题,以后转载 2016-09-12 21:57:23 · 238 阅读 · 0 评论 -
C/C++中extern关键字详解
参考: http://www.cnblogs.com/yc_sunniwell/archive/2010/07/14/1777431.html转载 2016-09-02 12:30:27 · 223 阅读 · 0 评论 -
C++中,值初始化
http://blog.csdn.net/nestler/article/details/23790525所谓的值初始化是针对定义顺序容器(一般为vector)(不包括关联容器)时只设置了元素个数而没有指定初始值的情况。采用这种类型的初始化,元素类型必须是内置或复合类型,或者是提供了默认构造函数的类类型。如果元素类型没有默认构造函数,则必须显式指定其元素初始化式。转载 2016-08-02 10:37:27 · 454 阅读 · 0 评论 -
C语言定义可变参数列表的函数
定义一个可接受可变参数列表的函数,在访问一个可变参数列表中额外的参数,需要使用< stdarg.h > 中定义的宏 例如: void func(参数1,参数2,参数parmN…) … 为可变参数列表 头文件 < stdarg >声明了一种类型且定义了3个宏,函数func在被编译时并不知道这个参数表中参数的数目和类型,在这种访问机制中,最右边的参数parmN起特殊的作用va_list 类型 :保原创 2016-08-16 23:48:29 · 560 阅读 · 0 评论 -
C++ :类中的静态私有数据成员
C++中,类中的静态私有数据成员不要指望(默认)构造函数来初始化,必须在.cpp文件中自己定义(class中只是声明)构造函数:初始化对象的非static数据成员,以及一些其他的工作; 析构函数:释放对象使用的资源,并销毁对象的非static数据成员;原创 2016-08-03 22:24:55 · 2122 阅读 · 0 评论 -
C++中类的前置声明
转载:http://www.cnblogs.com/King-Gentleman/p/5081159.html一、类嵌套的疑问假设我们有两个类A和B,定义在一个.H文件中,但是在A中要用到B,B中也要用到A,但是这样的写法当然是错误的: #ifndef _TEST__#define _TEST__class B;class A{private: B b;};class B{pri原创 2016-08-01 11:47:15 · 817 阅读 · 0 评论 -
C++ 抑制构造函数定义的隐式转换
参考:《C++ Primer》 P256构造函数添加explicit关键字修饰例子class StrBlob{public: typedef std::vector<std::string>::size_type size_type; StrBlob(); //StrBlob(std::initializer_list<std::string> il); explic原创 2016-07-30 22:47:00 · 646 阅读 · 0 评论 -
可执行文件执行时的内存概图
简要分析可执行文件装载->进程虚拟空间->内存的缩图 参考: 《程序员的自我修养》 P167 《C++ Primer 》 P400对于可执行文件: 浅绿色部分: .data 段通常保存初始化的全局对象(变量)和局部static对象 .bss 段通常保存未初始化的全局对象(变量)和局部static对象 这部分装载分配到DATA VMA(我理解为静态内存)(VMA 会映射到Memory)原创 2016-07-30 17:35:31 · 509 阅读 · 0 评论 -
C++中可调用对象
具体见:C++ Primer P3461.函数,函数指针; 2.lambda表达式; 3.重载了函数调用符的类; 4.谓词原创 2016-07-29 16:30:02 · 444 阅读 · 0 评论 -
一个数据读入时出现的BUG
//定义数据结构struct PersonInfo{ std::string name; std::vector<std::string> svec;};//输出函数std::ostream & output(std::ostream &os, const PersonInfo &personInfo){ os << "###" << personInfo.name原创 2016-07-27 18:48:10 · 584 阅读 · 0 评论 -
C++:IO流条件状态
具体说明章节:C++ primer P218测试代码:std::istream & input(std::istream &is){ char c; //当按ctrl + z 结束流时,流对象的eofbit和failbit被置位,流处于可恢复错误,结束while循环 while (is >> c) { std::cout << "#" << c<<原创 2016-07-27 15:11:53 · 530 阅读 · 0 评论 -
error LNK2019 无法解析的外部符号
装载一个常识性错误,关于内联函数的(error LNK2019 无法解析的外部符号)通常编写函数时,会把声明放到头文件(*.h)中,而把函数定义放在源文件(*.cpp)中,在其他源文件中使用时包含对应的头文件即可。但是内联函数(inline)不要定义在cpp文件中,因为我们通常都是包含头文件,而编译器在编译时会对内联函数进行展开操作,但是编译器只能在包含的头文件里搜索函数的定义体,如果头文件只有声明转载 2016-07-27 11:17:43 · 946 阅读 · 0 评论 -
C++ :STL 算法unique , unique_copy函数
一.unique函数《#include < algorithm >》在STL中unique函数是一个去重函数, unique的功能是去除相邻的重复元素(只保留一个),看一下效果: 可以看到元素的个数没有改变,但顺序改变,后面的300,400在原先的位置被保留下; 一般用法: 1.先排序sort(s.begin(), s.end()); 2.去重 auto end_unique = un原创 2016-08-04 20:37:58 · 600 阅读 · 0 评论 -
C++ vs中使用strcpy
项目-属性-配置属性-c/c++-预处理器-预处理定义里边添加_CRT_SECURE_NO_WARNINGS原创 2016-08-01 14:49:08 · 1618 阅读 · 0 评论 -
container_of函数原理分析
/** * container_of - cast a member of a structureout to the containing structure * @ptr: the pointer to the member. //指向成员变量的指针 * @type: the type of the Container struct this is embed转载 2016-09-23 23:07:48 · 390 阅读 · 0 评论