随笔- 182
文章- 1
评论- 28
阅读-
57万
09 2010 档案
混合使用标准库类string和C风格字符串
摘要:可以使用C风格字符串对string对象进行初始化或赋值string类型的加法操作需要两个操作数,可以使用C风格字符串作为其中一个操作数,也允许将C风格字符串用作复合赋值操作的右操作数。在要求使用C风格字符串的地方不可以直接使用标准库string类型对象无法使用string对象初始化字符串指针:stringst2("hello world"); char *str = st2; //compl...
阅读全文
创建动态数组
摘要:1、初始化动态分配的数组如果数组元素具有类型,将使用该类的默认构造函数初始化,如果是内置类型,则无初始化:string *psa = new string[10]; //array of 10 empty stringsint *pia = new int[10]; //array of 10 uninitialized ints也可以使用跟在数组长度后面的一对空圆括号,对数组...
阅读全文
C风格字符串
摘要:以空字符null结束的字符数组:char ca1[] = {'C','+','+'}; //no null,not C-style stringchar ca2[] = {'C','+','+','\0'}; //explicit nullchar ca3[] = {'C','+','+'}; //null terminator added automatic...
阅读全文
指针和const限定符
摘要:1、指向const对象的指针const double pi = 3.14;double *ptr = π //error:ptr is a plain pointerconst double *cptr = π //ok:cptr is a pointer to const不能用void *指针保存const对象的地址,而必须使用const void...
阅读全文
字符数组
摘要:char ca1[] = {'C','+','+'}; //no nullchar ca2[] = {'C','+','+','\0'}; //explicit nullchar ca3[] = "C++"; //null terminator added automaticallyca1的维数是3,而ca2和ca3的维数则是4下面的初始化将导致编译时的错误:cons...
阅读全文
头文件
摘要:1、头文件用于声明而不是用于定义定义只可以出现一次,而声明可以出现多次。下列语句是一些定义,不应该放在头文件里:extern int ival = 10;double fica_rate;虽然ival声明为extern,但是它有初始化式,代表这条语句是一个定义。类似地,fica_rate的声明虽然没有初始化式,但也是一个定义,因为没有关键字extern。同一个程序中有两个以上文件含有上述任一个定义...
阅读全文
const对象默认为文件的局部变量
摘要:在全局作用域里定义非const变量时,它在整个程序中都可以访问。可以把一个非const变量定义在一个文件中,假设已经做了合适的声明,就可以在另外的文件中使用这个变量://file_1.hint counter; //definition//file_2.hextern int counter; //uses counter from file_1.h++counter; //increm...
阅读全文
变量的声明和定义
摘要:定义用于为变量分配存储空间,还可以为变量指定初值,在一个程序中,变量有且仅有一个定义。声明用于向程序表明变量的类型和名字。可以使用extern关键字声明变量而不定义它。extern int i; //declares but does not define iint i; //declares and defines iextern声明不是定义,也不分配存储空间。只是说明变量定...
阅读全文
父类指针转换成子类指针
摘要:有如下定义:class A {};class B : public A{};A* pA = new B;下列代码无法完成转换的是( )A) B* pB = static_cast<B*>(pA);B) B* pB = reinterpret_cast<B*>(pA);C) B* pB = dynamic_cast<B*>(pA);D) B* pB = (B*)p...
阅读全文
一些混淆过的输出结果
摘要:下面代码执行后,正确的输出是( ) char *a ="Hello"; char b[6]="Hello"; if (a==b) { if (*a == *b) printf(“AA”); else printf(“BB”); } else { if (*a == *b) printf(“CC”); else printf(...
阅读全文
输出结果
摘要:#include<iostream>#include<complex>using namespace std;class Base{public:virtual void f( int iParam){cout << "Base::f(int)" << endl;};virtual void f( double dParam){cout <&l...
阅读全文
为什么会是这样的输出结果
摘要:#include<iostream>using namespace std;class Base{public:virtual void g( int i = 10 ){cout << i << endl;};};class Derived: public Base{public:void g( int i = 20 ){cout << "Deriv...
阅读全文
基类指针通过子类的虚函数调用子类的非虚函数
摘要:class A {public: virtual void op(); ……};class B : public A {public: void op(); // 在这个函数中会调用anotherOperator,但anotherOperator不是虚函数 void anotherOp(); ……};A* a = new B;a-&...
阅读全文
使用sizeof计算类的大小
摘要:类的sizeof大小一般是类中的所有成员的sizeof大小之和,这个就不用多说。不过有两点需要注意:1)当类中含有虚成员函数的时候,例如:class B{float a;public:virtual void fun(void);}此时sizeof(B)的大小为8,而不是4。因为在类中隐藏了一个指针,该指针指向虚函数表,正因为如此,使得C++能够支持多态,即在运行时绑定函数的地址。2)另一个要注意...
阅读全文
C++函数重定义、重载、重写
摘要:C++函数重定义、重载、重写1. 重写 (override): 父类与子类之间的多态性。子类重新定义父类中有相同名称和参数的虚函数。 1) 被重写的函数不能是 static 的。必须是 virtual 的 ( 即函数在最原始的基类中被声明为 virtual ) 。 2) 重写函数必须有相同的类型,名称和参数列表 (即相同的函数原型)3) 重写函数的访问修饰符可以不同。尽管 virtual 是 p...
阅读全文
VARIANT and VARIANTARG Data Types
摘要:The following definition of VARIANT is described in OAIDL.H automation header file:struct tagVARIANT{ union { struct __tagVARIANT { VARTYPE vt; WORD wReserved1; WORD wReserved2; WORD wReserved3; unio...
阅读全文
union:C/C++语言关键字
摘要:1. 共用体声明和共用体变量定义 共用体(参考“共用体”百科词条)是一种特殊形式的变量,使用关键字union来定义 共用体声明和共用体变量定义与结构体十分相似。其形式为: union 共用体名{ 数据类型 成员名; 数据类型 成员名; ... } 变量名;共用体表示几个变量共用一个内存位置,在不同的时间保存不同的数据类型和不同长度的变量。在unio...
阅读全文
Windows Management Instrumentation (Windows 管理规范) 的秘密
摘要:问题 1:WMI 是什么,它能帮我做什么?问题 2: WMI 适用于那些平台?问题 3:如果 WMI 向外界暴露特定的功能,我如何才能知道?问题 4:如果 WMI 没有提供我想要的功能,我应该怎么办? 问题 5:在哪里可以找到使用 WMI 的示例脚本?问题 6: 为什么我的脚本可以在某个版本的 Windows 上运行,但在另外一个版本的 Windows 上却不能运行?问题 7:为什么 WMI 操作...
阅读全文
MFC坐标转换
摘要:MapDialogRect,转换对话框坐标为像素坐标 功能:该函数把指定的对话框单位映射成屏幕单位(像素)。函数MapDialogRect用变换坐标替换指定的RECT结构中的坐标,这就使得该结构可以用来创建对话框或定位对话框内的控制。 函数原型:BOOL MapDialogRect(HWND hDlg,LPRECT IpRect); 参数: hDlg:标识对话框。MapDialogRec...
阅读全文