10 2011 档案
摘要:Creating a Security Descriptor for a New Object in C++The following example creates a security descriptor for a new registry key using the following process. Similar code can be used to create a security descriptor for other object types.The example fills an array of EXPLICIT_ACCESS structures with
阅读全文
摘要:注:这两个函数都是将字符串写到内存数组中char szA[100]; //An ANSI string bufferWCHAR szW[100]; //A Unicode string buffer//Normal sprintf:all strings are ANSIsprintf(szA, "%s","ANSI Str");//Converts Unicode string to ANSIsprintf(szA,"%S",L"Unicode Str");//Normal swprintf:all string
阅读全文
摘要:拿vc6.0来说:1、首先创建一个简单的win32 Application。2、设置工程预定义了UNICODE而没有预定义_UNICODE(工程->设置->预定义栏添加UNICODE)3、在WinMain主函数所在CPP文件包含<TChar.h>4、当在WinMain里添加 TChAR str[6] = "123"时,TCHAR被解析为unsigned short类型,当调用函数_tcscpy时,参数被解析为char类型5、修改工程预定义_UNICODE而没有预定义UNICODE,当在WinMain里添加 TChAR str[6] = "1
阅读全文
摘要:class First{public: int num = 0;//错误 const int num1 = 0;//错误 static int num2 = 0;//错误 static const int num3 = 0;//正确,只有静态常量整型数据成员才可以在类中初始化 string str = "0";//错误 const string str1 = "0";//错误 static string str2 = "0";//错误 static const string str3 = "0";//错误 floa
阅读全文
摘要:Animal为基类,Bird为派生类Bird继承Animal当继承方式为public时父类的public成员在子类也是public父类的protected成员在子类也是protected父类的private成员只属于父类当继承方式为protected时父类的public成员在子类是protected成员父类的protected成员在子类也是protected父类的private成员只属于父类当继承方式为private时父类的public成员在子类是private成员父类的protected成员在子类是private成员父类的private成员只属于父类
阅读全文
摘要:class Screen{public:void home(){_cursor = 0;}private:int _cursor;}虽然每个类对象都有自己的类数据成员拷贝。但是每个类成员函数的拷贝“只有一份”!例如:Screen myScreen, groupScreen;myScreen.home();groupScreen.home();其中myScreen, groupScreen调用home()时,调用的是同一个函数home()!---------------------------------------------------------------------------对于“成
阅读全文
摘要:定义类如下:class Foo{public:static int getNum();private:static int num;}1、定义一个指针指向 类的数据成员 numint Foo::*p = &Foo::num2、定义一个指针指向 类的成员函数 getNum()int (Foo::*pf)() = &Foo::getNum;/*int (Foo::*pf)() = &Foo::getNum;Foo *bufFoo;当通过指针访问类的成员函数getNum()时,应该这样写:(bufFoo->*pf)()*/
阅读全文
摘要:1、静态数据成员的类型可以是其所属类,而非静态数据成员只能被声明为该类的对象的指针。例如:class Bar{private:static Bar mem;//正确Bar mem1;//错误Bar *mem2;//正确}2、静态数据成员可以被作为类成员函数的缺省实参,而非静态成员不能。例如:class Foo{private:static int stcvar;public:int mem( int = stcvar);}3、静态成员函数的使用:如果一个类的成员函数只访问静态变量,则应该将此函数声明为静态函数</pre>
阅读全文
摘要:c++支持多态性的几种方式:1、通过一个隐式转化,从“派生类指针或引用”转化到“其公有基类类型的指针或引用”Query *pquery = new NameQuery( "Glass" );2、通过虚拟函数机制3、通过dynamic_cast 和 typeid 操作符(RTTI)1)首先这两个操作符是在“运行时刻类型识别”!2)当一个类库是由第三方库提供商提供时,此时我们不能增加虚拟成员函数。但我们可能仍然希望扩展这个类库(以便增加类库的功能),这种情况下,就必须使用dynamic_cast。使用dynamic_cast时注意:如果转化的类型为派生类指针,这样使用:void
阅读全文
摘要:class Diff{ public : void numble( int doftness );}class Shy : public Diff{ public: void numble( string str); using Diff::numble;}要想使基类和派生类中的这两个函数形成重载:需要在派生类中加一句话using Diff::numble; 这样就形成了重载。
阅读全文
摘要:以下类的定义只是为了说明虚拟机制而设计:class Animal{ public: int getNum();}class Bird : public Animal{ public: int getNum();}Animal *pa = new Bird();1、pa->getNum();此时调用的是Animal类的getNum()修改Bird类为:class Bird : public Animal{ public: int getNum(); virtual int getAge();}2、pa->getAge();编译错误:Animal类中不存在getAge...
阅读全文
摘要:#include <iostream>class Base{public: virtual int foo( int ival = 1024 ) { cout<<"Base::foo()----- ival: "<<ival<<endl; return ival; }};class Derived : public Base{ public: virtual int foo( int ival = 2048) { cout<<"Derived::foo()----- ival: "<<
阅读全文
摘要:基类定义如下:class Query{public: virtual Query *clone() = 0;};派生类定义如下:class NameQuery : public Query{ public: virtual Query *clone() { return new NameQuery(*this); }};Query *pq = new NameQuery();Query *pq1 = pq->clone();//获取抽象基类的“拷贝”
阅读全文
摘要:有一个基类:class Animal { public: Animal(); void setWeight(float weight); float getWeight(); private: float weight;}有两个Animal类的派生类:class ma:public Animal{ public: ma(); void run();}class lv:public Animal{ public: lv(); void roar();}定义一个派生类 luozi 继承 ma 和 lvclass luozi: public m...
阅读全文
摘要:#include "stdafx.h"#include <iostream>using namespace std;int _tmain(int argc, _TCHAR* argv[]){ /****const 指针****/ const double pi = 3.14; //double *p = π//错误,const对象的地址只能传给 指向const对象 的指针 const double *p = 0; p = π //*p += 1.4;//错误,不能通过 指向const对象的指针 修改 const对象 的值 double
阅读全文
摘要:/****Lession1.h****/extern bool a;extern int b;extern float c;extern double d;extern unsigned int e;extern long f;extern unsigned long g;extern char h;extern long double i; /****Lession1.cpp****/#include "stdafx.h"#include "Lession1.h"bool a;int b;float c;double d;unsigned int e;
阅读全文
摘要:#include "stdafx.h"#include <iostream>#include <vector>using namespace std;int _tmain(int argc, _TCHAR* argv[]){ /****数组用法****/ int iar[6] = {-12,-2,0,8,5,4}; vector<int> ivec(10,3); vector<int> ivec1(iar+1,iar+4); vector<int> ivec2(ivec1); vector<int>::
阅读全文
摘要:#include "stdafx.h"#include <iostream>#include <bitset>using namespace std;int _tmain(int argc, _TCHAR* argv[]){ bitset<32> bitvec(8); bool flag = bitvec.any();//判断是否存在某位或者多位为1,有则返回true bool flag1 = bitvec.none();//判断是否所有的位都是0,是则返回true bool flag2 = bitvec.test(3);//测试第4位是
阅读全文
摘要:char cal1[] = {'C','+','+'};//维数是3 char cal2[] = "c++";//维数是4 //char cal3[] = cal1;//不能用一个数组初始化另一个数组 //char &cal4[] = {'C','+','+'};//c++不允许数组引用----------------------------------------------------------string *ps = new string("Hello
阅读全文
摘要:dynamic_cast:通常在父类与子类之间转化时使用,转化的类型和对象都是类对象,不能应用于c++内置类型static_cast:一般的类型转换,但不能将一个const对象转型为non-const对象(只有const_cast能做到)。const_cast:将一个const对象转型为non-const对象;reinterpret_cast:通常对于操作数的位模式执行一个比较低层次的重新解释。
阅读全文
摘要:#include "stdafx.h"#include <iostream>using namespace std;enum EHstate{ noErr, zeroOP,nega, severeError};enum EHstate state = noErr;int mathFunc(int i){ if(i == 0) { throw state; }}void calculate(int op){ try { mathFunc(op); } catch(EHstate &eobj)//声明为引用 { ...
阅读全文
摘要:异常的属性(System.Exception):Data:此属性返回一个键值对集合,用来提供更多程序员定义的信息。HelpLink:返回一个URL,指向一个详细描述错误信息的帮助文件或网站InnerException:可用来获取导致当前异常发生的上一个异常的相关信息Message:此属性返回当前错误的文字描述Source:此属性返回引发当前异常的程序集名称StackTrace:返回触发异常调用序列的字符串TargetSite:返回一个MethodBase类型,其中描述了引发异常方法的许多细节 自定义异常一般为应用程序级异常,继承的父类为ApplicationException. 自定义异常需.
阅读全文
摘要:1、一旦定义了自定义构造函数,默认的构造函数就会被移除2、可以使用this设计构造函数链,将核心部分代码由主构造函数完成,其余的构造函数调用主构造函数就可以了3、静态构造函数适合初始化静态数据成员(这个初始化发生在编译时)4、防止创建类对象的方式:定义静态类将构造函数声明为私有的(private)将类声明为抽象的(abstract)5、OOP支柱封装:支持类型属性(可添加访问控制符),用来get和set数据成员(这里的get和set在内部也是方法, 所以其前面也可以添加访问控制符),也可以只写get或者set。对于静态数据成员,可以有静态的类型属性来get和set(当然也可以用非静态属性...
阅读全文
摘要:1、类型名后加?表示此变量可以赋值为null,例如 int? temp = null;
阅读全文
摘要:1、当把一个值类型的对象赋值给另一个对象的时候,就是对字段成员逐一赋值2、当把一个引用类型的对象赋值给另一个对象的时候, 就是内存中重定向引用变量的指向(也就相当于c++指针赋值),说白了就是两个不同的引用指向一个堆对象3、当值类型(struct类型)包含引用类型(类类型)时, 对于这样的值类型(struct)对象赋值给另一个对象的时候, 引用部分还是指向的同一个堆内存(除非重写赋值运算符),值部分还是对字段成员逐一赋值。引用类型参数传递时:1、如果按值传递:则被调函数也会产生一个引用指向,这个引用和主调函数里的引用指向同一个堆对象。2、如果按引用传递:则被调函数也会产生一个引用,但是这...
阅读全文
摘要:结构体变量:创建: struct emp { public string name; public int age; }使用1、 emp emp1; emp1.name = "yourname"; emp1.age = 12; 注:所有的成员都需要提供初始值2、emp emp1 = new emp(); 注:此时struct的默认构造器会初始化结构体变量成员的值为默认值
阅读全文
摘要:1、矩形数组的表示:int[,] iArray;2、多维数组的表示:int[][] iArray;提示:数组可以作为"参数"和"返回值"
阅读全文
摘要:out:实际的对象初始化赋值是在函数里,主调函数负责声明对象ref:实际是主调函数里"变量"(此变量是实际对内存对象的引用)的"引用"。(引用可以看做C++里的指针)params:就是接受未知数量的相同类型的参数
阅读全文
摘要:string:对象的字符数据是不可变的,当你对此对象操作时,返回的结果是另一个对象,原来的对象没有改变。StringBuilder:对象的字符数据是可变的,当你惭怍此对象时,改变的是原字符串本身
阅读全文
摘要:1、判断的两个变量为"堆"对象:如果两个对象引用的是同一块内存则返回true,否则返回false2、判断的两个变量为"栈"对象:如果两个对象的值相等则返回true,否则返回false堆和栈的理解如果不明白,查看"C#数据类型的层次图"
阅读全文
摘要:继承ValueType类的所有类型在"栈"上分配内存,Type、String、Array、Exception、Delegate在"堆"上分配内存。栈上的数值类型都有各自的成员和方法,例如int.MaxValue、int.MinValue、char.IsDigit('1')
阅读全文
摘要:常用属性:BackgroundColor:设置当前输出的背景色(ConsoleColor枚举值)ForegroundColor:设置当前输出的前景色BufferHeight:缓冲区的高度BufferWidth:缓冲区的宽度Title:当前控制台的标题Clear:清楚已建立的缓冲区和控制台的显示区域格式化输出:(标志不区分大小写)c:用于格式化货币d:用于格式化十进制数e:用于指数记数f:用于格式化定点小数g:将一个数格式化为定点或者指数格式n:用于数值格式化(输出为带逗号的格式)x:用于十六进制格式化
阅读全文
摘要:1、获取命令行参数string[] args = Environment.GetCommandLineArgs();2、获取本地驱动器信息string[] derives = Environment.GetLogicalDerives();3、获取进程数Environment.ProcessorCount;
阅读全文

浙公网安备 33010602011771号