前言 前段时间在网上看到了一个百度的面试题,大概意思是如何在不使用锁和C++11的情况下,用C++实现线程安全的Singleton。 看到这个题目后,第一个想法就是用Scott Meyer在《Effective C++》中提到的,把non-local static变量放到static成员函数中来.....
分类:
编程语言 时间:
2015-02-01 00:25:38
阅读次数:
374
C++的嵌套类意思就是类中定义的类,它和外围类的成员类似,也被相应的访问权限修饰符修饰。
1 嵌套类可以直接方位外围类中的static成员变量。
2 嵌套类可以通过引用,指针,或者对象来访问外围类的成员,不管该成员是public,private,protected。
3 嵌套类被private修饰的时候就不能在用户代码中被定义对象,因为是private的
4 外围类对嵌套类的非public...
分类:
编程语言 时间:
2015-01-29 19:32:39
阅读次数:
157
const的美妙在于它能让你规定一个语义上的常量。应该尽可能地在代码中使用它,全局作用域,命名空间内,类里面都可以使用, 不管是静态还是非静态的对象,你都可以使用它。
一个const对象,它只能调用const函数。因为非const函数,可能会修改这个对象。因此,如果一个成员函数,它不会修改任何非static 成员数据,你应该声明为const。比如:
class String {
...
分类:
编程语言 时间:
2015-01-19 21:00:33
阅读次数:
179
在一个类的内部定义的类,称为内部类内部类主要分类:1. 实例内部类2. 局部内部类3. 静态内部类实例内部类 :1. 创建实例内部类,外部类的实例必须已经创建2. 实例内部类会持有外部类的引用3. 实例内部不能定义 static 成员,只能定义实例成员静态内部类匿名内部类/* 内部类: 实例...
分类:
其他好文 时间:
2015-01-17 17:59:54
阅读次数:
140
最近看Effective C++经常看到一些和static相关的内容,希望综合整理一下,如果有不全,还望补充:
1 类中的Static成员变量
static成员它不像普通的数据成员,static数据成员独立于该类的任意对象而存在,每个static数据成员是与类关联的对象,并不与该类的对象相关联!
一般为类申请一个对象,是对类中成员变量申请一个副本,各个对象之间的成员变量和函数互不...
分类:
其他好文 时间:
2015-01-08 21:41:01
阅读次数:
242
我们可以用static修饰一个类的成员函数,也可以用const修饰类的成员函数(写在函数的最后表示不能修改成员变量,不是指写在前面表示返回值为常量)。能不能同时用static和const修饰类的称冠函数?
不能。C++编译器在实现const成员函数的时候为了确保该函数不能修改类的实例的状态,会在函数中添加一个隐式的参数const this*。但当一个成员为static的时候,该函数是没有this...
分类:
编程语言 时间:
2014-12-31 13:10:42
阅读次数:
176
我们可以用static修饰一个类的成员函数,也可以用const修饰类的成员函数(写在函数的最后表示不能修改成员变量,不是指写在前面表示返回值为常量)。能不能同时用static和const修饰类的称冠函数?
不能。C++编译器在实现const成员函数的时候为了确保该函数不能修改类的实例的状态,会在函数中添加一个隐式的参数const this*。但当一个成员为static的时候,该函数是没有this...
分类:
编程语言 时间:
2014-12-31 10:02:05
阅读次数:
154
STL源码分析—使用的一些特殊语法
关于泛型编程中用到的一些特殊语法,这些语法也适用于平常的模板编程
1、 类模板中使用静态成员变量
Static成员变量在类模板中并不是很特殊,同时这个变量不属于对象,属于实例化以后的这个类类型。每一个实例化对应一个static变量
2、 类模板中可以再有模板成员
3、 模板参数可以根据前一个模板参数而设定默认值
4、 类模板可以拥有非类型的模...
分类:
其他好文 时间:
2014-12-26 13:03:06
阅读次数:
170
为了将常量的作用域限制于class内,你必须让让成为class的一个成员;而为确保此常量之多只有一份实体,你必须让让成为一个static成员:
Class Gameplayer
{
Private:
Staticconst int Number = 5; //常量声明式
Intscores[N...
分类:
编程语言 时间:
2014-12-24 00:06:45
阅读次数:
214
1、 this 不能直接调用 非static成员class A{static public void M1(){ Hello(); // 错误 在static成员中不能直接调用非static成员 A a=new A(); a.Hello();}public void Hello()...
分类:
其他好文 时间:
2014-12-12 20:44:14
阅读次数:
125