摘要: 构造函数定义:构造函数c++中在创建对象时自动调用,用来初始化对象的特殊函数。 (1)构造函数的名字必须与类的名字相同,不能有返回值,哪怕是void 也不行。 (2)通常情况下构造函数应声明为公有函数,否则它不能像其他成员函数那样被显式地调用 构造函数被声明为私有有特殊的用途,这个以后再写。 (3) 阅读全文
posted @ 2016-06-25 15:54 阿瞒123 阅读(541) 评论(0) 推荐(0)
摘要: (1)转换构造函数 转换构造函数的定义:转换构造函数就是把普通的内置类型转换成类类型的构造函数,这种构造函数只有一个参数。只含有一个参数的构造函数,可以作为两种构造函数,一种是普通构造函数用于初始化对象,一种是转换构造函数 在上面的t=15这段代码中,会生成临时对象,那么临时对象是什么时候释放的呢? 阅读全文
posted @ 2016-06-25 15:53 阿瞒123 阅读(248) 评论(0) 推荐(0)
摘要: 和静态数据成员一样,静态成员函数是所有对象共享的,不是单独属于某一个对象,由于静态成员函数没有传递this指针,故static member function 只能访问static成员,不能访问非static 成员。但是非static却可以访问static 成员。 对象在访问静态成员时,可以通过点运 阅读全文
posted @ 2016-06-23 19:50 阿瞒123 阅读(1689) 评论(0) 推荐(0)
摘要: 有时需要为某个类的所有对象分配一个单一的存储空间,这个存储空间只是被这个类的对象访问,其他人不能访问,那么这时静态的成员变量是有用的。例如下面用来统计一共创建了多少个对象的变量num 在类内部,static int num;算是静态成员变得声明,而其定义时在int object::num=0;处。如 阅读全文
posted @ 2016-06-23 15:19 阿瞒123 阅读(515) 评论(0) 推荐(0)
摘要: 使用指令是把名字空间中的所有名字引入到当前作用域,而使用声明是把名字空间的某个名字引入到当前作用域中 语法如下 阅读全文
posted @ 2016-06-23 14:29 阿瞒123 阅读(2731) 评论(0) 推荐(0)
摘要: 名字空间是用来划分冲突域的,把全局名字空间划分成几个小的名字空间。全局函数,全局变量,以及类的名字是在同一个全局名字空间中,有时为了防止命名冲突,会把这些名字放到不同的名字空间中去。 首先我们看一下名字空间的定义: 上述代码有一个特别需要注意的地方就是,在MyLib.h文件中,如果使用声明,无论函数 阅读全文
posted @ 2016-06-23 14:07 阿瞒123 阅读(5130) 评论(0) 推荐(0)
摘要: 在文件作用域(file scope)内所有的名字,如果没有static修饰且不是类或者函数内部的名字,这些名字对程序中所有的翻译单元都是可见的,这就是所谓的外部链接(external linkage)。普通的函数或者全局变量都是外部链接。 在文件作用域,一个被生命为static的对象或者函数的名字对 阅读全文
posted @ 2016-06-22 19:57 阿瞒123 阅读(223) 评论(0) 推荐(0)
摘要: (1)static关键在普通变量中的应用,static在普通变量中,有两个作用: 第一个是限制全局变量以及函数的作用域(可见性),在全局作用域内定义的变量和函数前加static关键字修饰,那么变量和函数就只能在当前编译单元可见,别的编译单元不能再访问这些函数和变量 第二个作用是延长局部变量的生命周期 阅读全文
posted @ 2016-06-22 11:46 阿瞒123 阅读(233) 评论(0) 推荐(0)
摘要: 我们几乎总是希望用内联函数代替预处理器宏,但是有三个地方比较式适合使用预处理宏 (1)字符串定义 (2)字符串拼接 (3)标志粘贴 字符串拼接:#define DEBUG(X) cout<<#x"="<<x<<endl;//在这里字符串x和字符串=拼接在一起 上面的覅难以可以打印任何变量的值 标志粘 阅读全文
posted @ 2016-06-21 18:01 阿瞒123 阅读(162) 评论(0) 推荐(0)
摘要: 《thinking in C++》page210 在c++中,宏的概念是作为内联函数(inline function)来实现的,而内联函数无论从那一个方面上说都是真正的函数,编译器会检测内联函数的参数类型,返回值等。唯一不同于普通函数的地方就是在适当的地方像宏一样展开。所以不需要调用开销(参数压栈, 阅读全文
posted @ 2016-06-21 16:37 阿瞒123 阅读(173) 评论(0) 推荐(0)