static加到一个非类成员函数的函数(有点绕口,就是普通函数。因为类成员函数的static版本有其他的用途)前面,相当于匿名空间的作用——信息隐藏。翻译成白话版就是,只有在当前编译单元中可以被看到,而在别的编译单元中看不到。(什么是编译单元?就是一个展开了包含了头文件的cpp文件)看下面的两段代码...
分类:
其他好文 时间:
2014-07-03 19:59:57
阅读次数:
175
十三、复制控制
1. 复制构造函数
类中的成员函数都默认为inline类型,所以即使在类定义体内的函数声明显示定义为inline类型,在进行函数定义时也能够将inline进行省略。
// 复制构造函数应该为常量引用类型,如果允许传值参数会造成无限循环调用从而导致内存溢出。
CopyConstruct(const CopyConstruct& a)...
分类:
编程语言 时间:
2014-07-03 16:07:26
阅读次数:
255
当将类的某个数据成员声明为static时,该静态数据成员只能被定义一次,而且要被同类的所有对象共享。各个对象都拥有类中每一个普通数据成员的副本,但静态数据成员只有一个实例存在,与定义了多少类对象无关。静态方法就是与该类相关的,是类的一种行为,而不是与该类的实例对象相关。 静态数据成员的用途之一是统计...
分类:
编程语言 时间:
2014-07-03 10:16:58
阅读次数:
230
在成员函数内定义static变量成员函数内的局部变量可以是static的。如果将成员函数内的某个局部变量定义为静态变量,该类的所有对象在调用这个成员函数时将共享这个变量。例3-40本例在成员函数m中定义了一个static变量s,由于s定义在程序块内,它拥有程序块范围,因此它只能在m内部访问。每调用m...
分类:
其他好文 时间:
2014-07-02 19:52:53
阅读次数:
175
3.7 类数据成员和类成员函数到目前为止,我们所看到的数据成员和成员函数都是属于对象的。比方说,我们在3.6节定义了Task类,如果我们用Task类定义如下两个对象:那么,这两个对象都拥有各自的id、st、ft和logFile数据成员。C++还支持另外一种类型的成员,这种成员属于类本身,而不属于类的...
分类:
其他好文 时间:
2014-07-02 19:46:58
阅读次数:
130
类成员函数除了static数据成员,类还可以有static成员函数。静态成员函数只能访问其他的static成员,包括数据成员和成员函数。例3-38本例声明了一个内联的static成员函数getN。在例3-35中,我们知道对象和非静态成员函数(包括构造函数和析构函数)可以访问像n这样的static数据...
分类:
其他好文 时间:
2014-07-02 19:44:32
阅读次数:
220
string有个成员函数,assign()可以这样:1 string str;2 str.assign(temp, sizeof(temp));
分类:
其他好文 时间:
2014-07-02 17:23:54
阅读次数:
229
继承所谓封装,就是将对象的成员变量和成员函数包装和隐藏起来,对外界通过特定的接口来访问。public class User { private String name; public User (String name) { this.name = name; } ...
分类:
编程语言 时间:
2014-07-01 13:18:47
阅读次数:
216
Singleton 是对全局变量的取代策略
作用:保证一个类只能有一个实例,并提供一个全局唯一的访问点。
仅有一个实例:通过类的静态成员变量来体现。
提供访问它的全局访问点:访问静态成员变量的静态成员函数来体现。
《设计模式》一书中给出了一种很不错的实现,定义一个单例类,使用类的私有静态指针变量指向类的唯一实例,并用一个公有的静态方法获取该实例。
单例模式通过类本身来管理其唯一实例,这种特性提供了解决问题的方法。唯一的实例是类的一个普通对象,但设计这个类时,让它只能创建一个实例并提供对此实例的全局访问...
分类:
其他好文 时间:
2014-06-30 20:27:52
阅读次数:
255
1.友元函数
(1)友元函数是定义在一个类外的普通函数。
友元函数和普通函数的定义一样;在类内必须将该普通函数声明为友元。
(2)友元函数不是成员函数。
不能通过对象来调用,而是直接调用;友元函数可以访问类的公有、受保护以及私有成员,但是必须通过对象、对象指针或者对象引用来访问。
2.友元函数的声明
friend 返回值类型 函数名(参数表);
在类中只需要将这个声明放置在公有部分即...
分类:
编程语言 时间:
2014-06-30 06:29:31
阅读次数:
190