
C++
文章平均质量分 52
Glemontree_
热爱技术,热爱开源
展开
-
[C++] effective_C++_条款02
条款02:尽量用const, enum, inline代替#define该原则言下之意是说使用编译器替换预处理器假设你使用下面的表达式:#define ASPECT_RATIO 1.653记号名称ASPECT_RATIO也许从未被编译器看到,也许在编译器开始处理源代码之前它就被预处理器移走了,于是ASPECT_RATIO可能从来没进入记号表中,于是当你运用此常量但获得一个编译错误信息时,你可原创 2017-09-01 13:47:27 · 1057 阅读 · 0 评论 -
[C++] 零散知识点
time_t实际上是长整型long int,它用来 保存从1970年1月1日0时0分0秒到现在时刻的秒数,用time()这个函数获取gmtime函数原型:struct tm* gmtime(time_t* time)函数功能:得到以结构tm表示的时间信息函数返回:以结构tm表示的时间信息指针所述文件:<time.h>#include <stdio.h>#include <stdlib.h原创 2017-09-02 21:51:25 · 188 阅读 · 0 评论 -
[C++] 继承与同名成员变量
C++继承中子类与父类有同名成员变量的情况话不多说,先看下面这个例子:#include <iostream>class Base {public: int a; Base() { a = 0; std::cout << "base constructor..." << std::endl; } void print() { std::cout << a <<原创 2017-09-02 21:50:46 · 2380 阅读 · 0 评论 -
[C++] VS中出现未将对象引用设置到对象的实例
VS中出现未将对象引用设置到对象的实例具体什么原因我也不知道,在知乎上看到了有人回答了解决方案,依据他给的方法,成功解决:在window中打开功能里输入regedit,回车打开注册器。然后进入如下路径中HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\FipsAlgorithmPolicy,将enable设置为0。参考资料VS2015一新原创 2017-09-02 21:49:36 · 10205 阅读 · 0 评论 -
[C++] ACE书籍推荐
《ACE程序员指南:网络与系统编程的使用设计模式》(简称:APG)《C++网络编程:运用ACE和模式消除复杂性 卷1》(简称:C++NPv1)《C++网络编程:基于ACE和框架的系统化复用 卷2》(简称:C++NPv2)原创 2017-09-02 21:48:44 · 1812 阅读 · 0 评论 -
[C++] boost::less_than_comparable
boost::less_than_comparable前言很多操作符都是可以从其他操作符自动推导出来,例如a != b可以从!(a == b)推导出来,因此原则上只需要定义少量的基本操作符,其他的操作符就可以 通过逻辑组合推导出来。std::rel::ops在C++98标准的std::rel_ops中定义了四个模板比较操作符!=、>、<=、>=,只需要为类定义==和<操作符,那么这四个操作符就可以自原创 2017-09-02 21:48:04 · 791 阅读 · 0 评论 -
[C++] boost::function boost::bind 与 回调
boost::function 和 boost::bindboost::function是对函数指针的对象化封装,是一个函数对象的容器,在概念上与回调函数类似,先看一个例子:#include <boost/function.hpp>#include <boost/bind.hpp>#include <iostream>class TestA {public: void method()原创 2017-09-02 21:47:26 · 763 阅读 · 0 评论 -
[C++] assert用法
assert()函数用法总结assert宏的原型定义在<assert.h>中,如果它的条件返回错误,则终止程序执行:#include <assert.h>void assert(int expression);assert的作用是计算表达式expression,如果其值为假(0),那么向stderr打印出一条出错信息,然后调用abort来终止程序执行。在调试结束后,可以通过在包含#includ原创 2017-09-02 21:45:45 · 203 阅读 · 0 评论 -
[C++] BOOST_STATIC_ASSERT和assert的区别
BOOST_STATIC_ASSERT和assert的区别assert是运行期断言,也就是编译期出现的错误,它不会提示;相反,BOOST_STATIC_ASSERT是编译期的断言,在编译的时候就可以断言出错误。需要注意的是BOOST_STATIC_ASSERT是放在全局命名空间中的,所以使用的时候不要加上boost::限定名原创 2017-09-01 13:50:34 · 356 阅读 · 0 评论 -
[C++] C++11 bind 的用法
BindBind可用于绑定函数、成员函数、函数对象、成员变量,bind函数支持最多10个自定义参数int f(int a, int b) { return a + b;}std::bind(f, 5, std::placeholders::_1)(x); // 相当于执行了f(5, x);在上面这段代码中:std::bind函数返回绑定对象,后面跟的(x)表示传参x并执行;std::原创 2017-09-01 13:50:19 · 357 阅读 · 0 评论 -
[C++] C++中boost::any的使用
boost::any库是个很短小的类,它的主要作用是定义一个变量来存放任意类型的数据,我们首先来看下boost::any的使用方法。boost::any最常见的用法#include <iostream>#include <list>#include <boost/any.hpp>typedef std::list<boost::any> list_any; // 类型定义void fill_l原创 2017-09-01 13:49:51 · 10190 阅读 · 0 评论 -
[C++] Effective_C++_条款06
条款06:若不想使用编译器自动生成的函数,就应该明确拒绝总有些情况,我们不希望编译器为我们生成拷贝构造函数和赋值函数,这时候我们就应该明确告诉编译器不要生成。为了解决这个问题,我们可以自己写拷贝构造函数和赋值函数,这样编译器就不会为我们生成,但不能写在public里,因为public里的函数可以被外界调用,一种好的方法就是将其写在private或protected里:class HomeForS原创 2017-09-01 13:49:06 · 213 阅读 · 0 评论 -
[C++] effective_C++_条款05
条款05:了解C++默默编写并调用哪些函数一个空类为了区分不同的对象,其通占有1个字节编译器为空类默认生成拷贝函数、析构函数、拷贝构造函数以及赋值运算符假设有下面这个空类:class EmptyClass {};编译器会为EmptyClass生成下面4个函数:class EmptyClass {public: EmptyClass() {} ~EmptyClass() {}原创 2017-09-01 13:48:43 · 208 阅读 · 0 评论 -
[C++] effective_C++_条款03
条款03:尽可能使用const修饰变量,使其不可改变const int var = 3;此时var的值就不能改变了,因为这个特性,所以在声明的时候就要初始化,这样是不行的:const int var;修饰指针可分为两种情况,指向常量的指针和常量指针const int* p = &a;修饰迭代器C++的STL中既有vector<T>::iterator,也有vector<T>::const_it原创 2017-09-01 13:48:19 · 214 阅读 · 0 评论 -
[C++] 前置++和后置++的区别
前置++和后置++的区别前置++和后置++在程序开发中使用十分频繁,那么你是否真正了解它们的区别呢?其实++i相当于下面的代码:i += 1;return i;而i++则相当于下面的代码:j = i;i += 1;return j;对于内建数据类型,其实前置++和后置++的效率相差不大,而对于自定义的数据类型,前置++返回对象的引用,而后置++则返回对象的值,所以导致在大对象的时候产生了较大的原创 2017-09-02 21:52:01 · 1572 阅读 · 0 评论