c++
dodo_check
这个作者很懒,什么都没留下…
展开
-
仿函数
仿函数(Functor、Function Object)传递给STL算法的函数型参数(functional arguement)不一定要是函数,可以是行为类似于函数的对象,即Function Object或者Functor。STL中大量运用了Function Object,也提供了很多预先定义的Function Object。如果你定义了一个对象,其行为像函数,就可以拿来当函数使用。转载 2012-09-07 00:11:53 · 2605 阅读 · 0 评论 -
c++ 基础错误
1. incomplete typeincomplete type是指被用来声明变量的类型,其大小无法确定,编译器因此无法为该变量分配空间。解决的方法是完成该类型的定义。举个例子: class A; // incomplete type A* a; // no error. A b; // error. b的大小无法确定。 class A { int c原创 2012-11-14 11:47:56 · 356 阅读 · 0 评论 -
指向成员的指针
#include #include using namespace std;class Member {public:Member():x(1),y(2),z(3){} virtual ~Member(){} float x,y,z;};int main( int argc, char *argv[]){ Member m; cout << "size:"<原创 2013-07-21 09:36:55 · 452 阅读 · 0 评论 -
c++ 隐式转换&&显示转化
class MM {public:MM(char const *aa) {cout <<"aa:" <<aa <<endl;}MM(const MM &aa) {cout <<"bb" <<endl;}MM & operator=(const MM &aa){ cout <<"ccc:" <<endl; return *this;}};int main(int argc, char* argv[]转载 2013-07-17 18:45:12 · 617 阅读 · 0 评论 -
delete this
delete this触发a. 析构 b. ::operator delete(void*)delete 之后,仍然可以进行成员函数、成员变量的操作,但是正确性不可靠。class Test { public: Test():mm(111) {/* delete this;*/ cout << mm <<endl;} ~Test() { cout <<"dect" <转载 2013-07-16 16:35:48 · 493 阅读 · 0 评论 -
extern &&头文件
用#include可以包含其他头文件中变量、函数的声明,为什么还要extern关键字,如果我想引用一个全局变量或函数a,我只要直接在源文件中包含#include (xxx.h包含了a的声明)不就可以了么,为什么还要用extern呢??这个问题一直也是似是而非的困扰着我许多年了,今天上网狠狠查了一下总算小有所获了:头文件首先说下头文件,其实头文件对计算机而言没什么作用,她只是在预编译时在#i转载 2013-06-27 22:46:11 · 556 阅读 · 0 评论 -
C/C++中作用域详解
作用域规则告诉我们一个变量的有效范围,它在哪儿创建,在哪儿销毁(也就是说超出了作用域)。变量的有效作用域从它的定义点开始,到和定义变量之前最邻近的开括号配对的第一个闭括号。也就是说,作用域由变量所在的最近一对括号确定。(1) 全局变量: 全局变量是在所有函数体的外部定义的,程序的所在部分(甚至其它文件中的代码)都可以使用。全局变量不受作用域的影响(也就是说,全局变量的生命期一直到程序的转载 2013-06-26 20:15:28 · 429 阅读 · 0 评论 -
宏define替换场景
class Foo { public: void test() { std::cout << "sdfsdf" << std::endl; } };#define CALL(method) \ client.method()#define A(x) x##1int main(int argc, char *argv[]) { int y1原创 2013-07-08 20:05:49 · 487 阅读 · 0 评论 -
extern && static
static是C++中常用的修饰符,它被用来控制变量的存贮方式和可见性。extern, "C"是使C++能够调用C写作的库文件的一个手段,如果要对编译器提示使用C的方式来处理函数的话,那么就要使用extern "C"来说明。一.C语言中的static关键字在C语言中,static可以用来修饰局部变量,全局变量以及函数。在不同的情况下static的作用不尽相同。(1)修饰局部变量一般转载 2013-05-21 21:03:16 · 481 阅读 · 0 评论 -
explicit
先来看看下面这个类[cpp] view plaincopyprint?class CA { public: int m_i; CA (int i); }; void foo(CA data) { cout } int main(int argc, char *argv[]) { foo(20); r转载 2013-01-31 15:54:13 · 329 阅读 · 0 评论 -
创建默认构造函数
在文章开始之前,首先指出对于c++新手的两个常见的误解: 一、任何class如果没有定义default constructor,就会被合成出一个来。 二、编译器合成出来的default constructor会明确设定'“class内每一个data member的默认值” 首先我们来讨论第一个误解。编译器并不是给任何一个没有user-declared转载 2013-01-13 15:52:44 · 437 阅读 · 0 评论 -
operator new与new operator
C++中的operator new与new operator,看上去挺像的两姐妹,却有天壤之别。operator new(1) 只分配所要求的空间,不调用相关对象的构造函数。当无法满足所要求分配的空间时,则 ->如果有new_handler,则调用new_handler,否则 ->如果没要求不抛出异常(以nothrow参数表达),则执行b转载 2013-01-11 00:27:18 · 276 阅读 · 0 评论 -
模板的实例化
编译器对待模版时,总会用它产生特定类型的版本,这个过程成为实例化。其中函数模板在调用时或者用它对指向函数的指针初始化或者赋值时实例化,类模板在引用实际模板类型时实例化。尤其对于函数模板,编译器通常会进行实参的推断。伴随而来的问题跟函数重载类似,就是确定匹配的模板。对于模板,多个类型的实参必须完全匹配,不能依靠隐式的类型转换:对于模板:[cpp] view plainco转载 2013-01-02 23:53:24 · 420 阅读 · 0 评论 -
文件io
1.bool DataLoaderController::GetDBIdFromFile() { FILE *f; if (f= fopen(kDBIdFilePath, "r")) { DBIdBuffer db_id_buffer; size_t ret = fread(&db_id_buffer, sizeof(DBIdBuffer), 1, f);原创 2012-12-10 14:46:54 · 341 阅读 · 0 评论 -
stl /boost 网址
http://stlchina.huhoo.net/bin/view.pl/Main/STLTechArticles转载 2012-11-16 10:32:25 · 274 阅读 · 0 评论 -
一个单例
#include #include using namespace std;/*class mm {private: static mm *aa;public: static mm& instance() { if (!aa) aa = new mm; return *aa; } void outoup() { cout <<"a原创 2013-08-12 15:37:30 · 493 阅读 · 0 评论