CString成员函数详解

CString成员函数详解
CString成员函数详解

CString类所有成员函数详解

VC里CString是我们最常用的类之一,我们觉得对它很熟悉了,可是你知道它的所有用法吗?还是系统的学习一下吧,认真看完本文就OK了。

下面开始:

CString::Compare

int Compare( LPCTSTR lpsz ) const;

返回值字符串一样返回0

小于lpsz 返回-1

大于lpsz 返回1

区分大小字符

CString s1( "abc" );

CString s2( "abd" );

ASSERT( https://www.360docs.net/doc/b06813531.html,pare( s2 ) == -1 );

ASSERT( https://www.360docs.net/doc/b06813531.html,pare( "abe" ) == -1 );

CString::CompareNoCase

int CompareNoCase( LPCTSTR lpsz ) const;

返回值字符串一样返回0

小于lpsz 返回-1

大于lpsz 返回1

不区分大小字符

CString::Collate

int Collate( LPCTSTR lpsz ) const;

同CString::Compare

CString::CollateNoCase

int CollateNocase( LPCTSTR lpsz ) const;

同CString::CompareNoCase

CString::CString

CString( );

CString( const CString& stringSrc );

CString( TCHAR ch, int nRepeat = 1 );

CString( LPCTSTR lpch, int nLength );

CString( const unsigned char* psz );

CString( LPCWSTR lpsz );

CString( LPCSTR lpsz );

例子最容易说明问题

CString s1;

CString s2( "cat" );

CString s3 = s2;

CString s4( s2 + " " + s3 );

CString s5( 'x' ); // s5 = "x"

CString s6( 'x', 6 ); // s6 = "xxxxxx"

CString s7((LPCSTR)ID_FILE_NEW); // s7 = "Create a new document"

CString city = "Philadelphia";

CString::Delete

int Delete( int nIndex, int nCount = 1);

返回值是被删除前的字符串的长度

nIndex是第一个被删除的字符,nCount是一次删除几个字符。根据我实验得出的结果:当nCount>要删除字符串的最大长度(GetCount() - nIndex)时会出错,当nCount过大,没有足够的字符删除时,此函数不执行。

例子

CString str1,str2,str3;

char a;

str1 = "nihao";

str2 = "nIhao";

int x;

// int i=(str1 == str2);

str1.Delete(2,3);

如果nCount(3) > GetCount() –nIndex (5-2)就会执行错误

CString::Empty

Void Empty( );

没有返回值清空操作;

例子

CString s( "abc" );

s.Empty();

ASSERT( s.GetLength( ) == 0 );

CString::Find

int Find( TCHAR ch ) const;

int Find( LPCTSTR lpszSub ) const;

int Find( TCHAR ch, int nStart ) const;

int Find( LPCTSTR lpszSub, int nStart ) const;

返回值不匹配的话返回-1; 索引以0 开始

nStar 代表以索引值nStart 的字符开始搜索,

即为包含以索引nStart字符后的字符串

例子

CString s( "abcdef" );

ASSERT( s.Find( 'c' ) == 2 );

ASSERT( s.Find( "de" ) == 3 );

Cstring str(“The stars are aligned”);

Ing n = str.Find('e',5);

ASSERT(n == 12)

CString::FindOneOf

int FindOneOf( LPCTSTR lpszCharSet ) const;

返回值不匹配的话返回-1; 索引以0 开始

注意::返回此字符串中第一个在lpszCharSet中也包括字符并且从零开始的索引值

例子

CString s( "abcdef" );

ASSERT( s.FindOneOf( "xd" ) == 3 ); // 'd' is first match.

CString::Format

void Format( LPCTSTR lpszFormat, ... );

void Format( UINT nFormatID, ... );

lpszFormat 一个格式控制字符串

nFormatID 字符串标识符

例子

CString str;

Str.Format(“%d”,13);

此时Str为13

CString::GetAt

TCHAR GetAt( int nIndex ) const;

返回标号为nIndex的字符,你可以把字符串理解为一个数组,GetAt类似于[].注意nIndex的范围,如果不合适会有调试错误。

CString::GetBuffer

LPTSTR GetBuffer( int nMinBufLength );

返回值

一个指向对象的(以空字符结尾的)字符缓冲区的LPTSTR 指针。

参数

nMinBufLength

字符缓冲区的以字符数表示的最小容量。这个值不包括一个结尾的空字符的空间。

说明

此成员函数返回一个指向CString 对象的内部字符缓冲区的指针。返回的LPTSTR 不是const,因此可以允许直接修改CString 的内容。如果你使用由GetBuffer 返回的指针来改变字符串的内容,你必须在使用其它的CString 成员函数之前调用ReleaseBuffer 函数。

在调用ReleaseBuffer 之后,由GetBuffer 返回的地址也许就无效了,因为其它的CString 操作可能会导致CString 缓冲区被重新分配。如果你没有改变此CString 的长度,则缓冲区不会被重新分配。当此CString 对象被销毁时,其缓冲区内存将被自动释放。

注意,如果你自己知道字符串的长度,则你不应该添加结尾的空字符。但是,当你用ReleaseBuffer 来释放该缓冲区时,你必须指定最后的字符串长度。如果你添加了结尾的空字符,你应该给ReleaseBuffer 的长度参数传递-1 ,ReleaseBuffer 将对该缓冲区执行strlen 来确定它的长度。

下面的例子说明了如何用CString::GetBuffer。

// CString::GetBuffer 例子

CString s( "abcd" );

#ifdef _DEBUG

afxDump << "CString s " << s << "\n";

#endif

LPTSTR p = s.GetBuffer( 10 );

strcpy( p, "Hello" ); // 直接访问CString 对象。

s.ReleaseBuffer( );

#ifdef _DEBUG

afxDump << "CString s " << s << "\n";

#endif

CString::GetLength

int GetLength( ) const;

返回值

返回字符串中的字节计数。

说明

此成员函数用来获取这个CString 对象中的字节计数。这个计数不包括结尾的空字符。

对于多字节字符集(MBCS),GetLength 按每一个8 位字符计数;即,在一个多字节字符中的开始和结尾字节被算作两个字节。

示例

下面的例子说明了如何使用CString::GetLength。

// CString::GetLength 示例

CString s( "abcdef" );

ASSERT( s.GetLength() == 6 );

CString::Insert

int Insert( int nIndex, TCHAR ch );

int Insert( int nIndex, LPCTSTR pstr );

返回修改后的长度,nIndex是字符(或字符串)插入后的索引号例子

CString str( “HockeyBest”);

int n = str.Insert( 6, “is” );

ASSERT( n == str.GetLength( ) );

printf( “1: %s\n”, ( LPCTSTR ) str );

n = str.Insert( 6, ' ' );

ASSERT( n == str.GetLength( ) );

printf ( “2: %s\n”, (LPCTSTR) STR );

n = str.Insert(555, …1?);

ASSERT( n == str.GetLength ( ) );

printf ( “3: %s\n”, ( LPCTSTR ) str );

输出

1. Hockeyis Best

2. Hockey is Best

3. Hockey is Best!

CString::IsEmpty

BOOL IsEmpty( ) const;

返回值

如果CString 对象的长度为0,则返回非零值;否则返回0。

说明

此成员函数用来测试一个CString 对象是否是空的。

示例

下面的例子说明了如何使用CString::IsEmpty。

// CString::IsEmpty 示例

CString s;

ASSERT( s.IsEmpty() );

请参阅CString::GetLength

CString::Left

CString Left( int nCount ) const;

throw( CMemoryException );

返回的字符串是前nCount个字符。

例子

CString s( _T("abcdef") );

ASSERT( s.Left(2) == _T("ab") );

CString::LoadString

BOOL LoadString( UINT nID );

throw( CMemoryException );

返回值

如果加载资源成功则返回非零值;否则返回0。

nID 一个Windows 字符串资源ID。

说明此成员函数用来读取一个由nID 标识的Windows 字符串资源,并放入一个已有CString 对象中。示例

下面的例子说明了如何使用CString::LoadString。

// CString::LoadString 示例

#define IDS_FILENOTFOUND 1

CString s;

if (! s.LoadString( IDS_FILENOTFOUND ))

CString::MakeLower

void MakeLower( );

改变字符的小写

CString::MakeReverse

void MakeReverse( );

字符倒置

CString::MakeUpper

void MakeUpper( );

改变字符的大写

CString::Mid

CString Mid( int nFirst ) const;

CString Mid( int nFirst, int nCount ) const;

nCount代表要提取的字符数, nFirst代表要提取的开始索引位置

例子

CString s( _T("abcdef") );

ASSERT( s.Mid( 2, 3 ) == _T("cde") );

CString::ReleaseBuffer

void ReleaseBuffer( int nNewLength = -1 );

参数

nNewLength

此字符串的以字符数表示的新长度,不计算结尾的空字符。如果这个字

符串是以空字符结尾的,则参数的缺省值-1 将把CString 的大小设置为

字符串的当前长度。

说明

使用ReleaseBuffer 来结束对由GetBuffer 分配的缓冲区的使用。如果你知道缓冲区中的字符串是以空字符结尾的,则可以省略nNewLength 参数。如果字符串不是以空字符结尾的,则可以使用nNewLength 指定字符串的长度。在调用ReleaseBuffer 或其它CString 操作之后,由GetBuffer 返回的地址是无效的。示例

下面的例子说明了如何使用CString::ReleaseBuffer。

// CString::ReleaseBuffer 示例

CString s;

s = "abc";

LPTSTR p = s.GetBuffer( 1024 );

strcpy(p, "abc"); // 直接使用该缓冲区

ASSERT( s.GetLength() == 3 ); // 字符串长度= 3

s.ReleaseBuffer(); // 释放多余的内存,现在p 无效。

ASSERT( s.GetLength() == 3 ); // 长度仍然是3

CString::Remove

int CString::Remove ( TCHAR ch );

返回值

返回从字符串中移走的字符数。如果字符串没有改变则返回零。

参数

ch

要从一个字符串中移走的字符。

说明

此成员函数用来将ch 实例从字符串中移走。与这个字符的比较是区分大小写的。

示例

// 从一个句子中移走小写字母'c':

CString str (“This is a test.”);

int n = str.Remove( 't' );

ASSERT( n == 2 );

ASSERT( str ==“This is a es. ” );

CString::Replace

int Replace( TCHAR chOld, TCHAR chNew );

int Replace( LPCTSTR lpszOld, LPCTSTR lpszNew );

返回值

返回被替换的字符数。如果这个字符串没有改变则返回零。

参数

chOld

要被chNew 替换的字符

chNew

要用来替换chOld 的字符。

lpszOld

一个指向字符串的指针,该字符串包含了要被lpszNew 替换的字符。

lpszNew

一个指向字符串的指针,该字符串包含了要用来替换lpszOld 的字符。

说明

此成员函数用一个字符替换另一个字符。函数的第一个原形在字符串中用chNew 现场替换chOld。函数的第二个原形用lpszNew 指定的字符串替换lpszOld 指定的子串。

在替换之后,该字符串有可能增长或缩短;那是因为lpszNew 和lpszOld 的长度不需要是相等的。两种版本形式都进行区分大小写的匹配。

全文至此结束。

成员函数、非成员函数和友元函数介绍

成员函数、非成员函数和友元函数介绍 一、成员函数、非成员函数和友元函数 成员函数和非成员函数最大的区别在于成员函数可以是虚拟的而非成员函数不行。 成员函数的优势是能够方便的进行动态绑定,实现多态。 说明一个函数为一个类的友元函数则该函数可以访问此类的私有数据和方法。 二、成员函数介绍 1、显式构造函数 C++中的e xplicit关键字用来修饰类的构造函数,表明该构造函数是显式的。 隐式构造函数能够实现将该构造函数对应数据类型的数据转换为该类对象。 class MyClass { public: MyClass( int num); } MyClass obj = 10; //ok,convert int to MyClass 如果在构造函数前加上关键字explicit,上述编译出错。 2、静态函数: 类中,static型的成员函数,由于是类所拥有的,而不是具体对象所有的。 静态函数屏蔽了this指针,因此,如果成员函数作为回调函数,就应该用static去修饰它。 3、虚函数: 虚函数首先是一种成员函数,它可以在该类的派生类中被重新定义并被赋予另外一种处理功能。 注意多态不是函数重载。函数重载属于静态绑定,虚函数实现多态是动态绑定。 4、纯虚函数: 在抽象类中定义纯虚函数,必须在子类实现,不过子类也可以只是声明为纯虚函数,由 子类的子类实现。 5、协变返回类型: 一般来说,一个重写的函数与被它重写的函数必须具有相同的返回类型。 这个规则对于”协变返回类型(covariant return type)”的情形来说有所放松. 也就是说,若B是一个类类型,并且一个基类虚拟函数返回B *,那么一个重写的派生类函数可以返回D *, 其中的D公有派生于B(即D是一个(is-a)B).若基类虚函数返回B &,那么一个重写的派生类函数可以返回一个D&. 考虑如下一个shape层次结构的clone操作: Class Shape { Public: //… Virtual Shape *clone () const = 0; //prototype(原型) //… }; Class Circle : public Shape {

Proe中的常用函数关系

Proe中的部分函数关系 一、函数关系 sin 正弦Cos 余弦tan 正切asin 反正弦acos 反余弦atan 反正切sinh 双曲线余弦cosh 双曲线正弦tanh 双曲线正切spar 平方根exp e的幂方根abs 绝对值log 以10为底的对数ln 自然对数 ceil 不小于其值的最小整数floor 不超过其值的最大整数 二、齿轮公式 alpha=20 m=2 z=30 c=0.25 ha=1 db=m*z*cos(alpha) r=(db/2)/cos(t*50) theta=(180/pi)*tan(t*50)-t*50 z=0 三、蜗杆的公式da=8为蜗杆外径m=0.8 为模数angle=20压力角 L=30长度q直径系数d分度圆直径f齿根圆直径n实数

其中之间的关系 q=da/m-2 d=q*m df=(q-2.4)*m n=ceil(2*l/(pi*m)) 在可变剖面扫描的时候运用公式sd4=trajpar*360*n 在扫描切口的时候绘制此图形,其中红色的高的计算公式是sd5=pi*m/2 五、方向盘的公式sd4=sd6*(1-(sin(trajpar*360*36)+1)/8) 其中sd4是sd6的(3/4或者7/8),sin(trajpar*360*36的意思是转过360度且有36个振幅似的 六、凸轮的公式sd5=evalgraph("cam2",trajpar*360) r=150 theta=t*360 z=9*sin(10*t*360) 在方向按sin(10*t*360)的函数关系,9为高的9倍10为10个振幅似的 七、锥齿轮公式 m=4模数z =50齿轮齿数z-am=40与之啮合的齿轮齿数angle=20压力角b=30齿厚long分度圆锥角 d分度圆直径da齿顶圆直径df齿根圆直径db基圆直径关系:long=atan(z/z-am) d=m*z da=d+2*m*cos(long)

MFC——4个基本类中的成员函数介绍.docx

09121852杜军机械设计及理论 1. CMainFrame ActivateFrame使框架对用户可视并可用 CalcWindowRect每当主框架窗I I的客户区尺寸发生变化或控制条的位置发生变 化,需要重新排列客户区时,调用该函数 Create调用以构造和初始化一个与CFrameWnd对象有关的Windows框架窗口DefWindowProc该函数调用缺省的窗口过程来为应用程序没有处理的任何窗口消 息提供缺省的处理 DestroyWindow销毁指定的窗口 DoDataExchange UpdateData会调用这个函数,调用它来初始化对话框的控件或更新数据 GetActiveDocument得到当前文档的指针 GetActiveFrame 返回活动CFrameWnd 对象 GetScrollBarCtrl调用这个成员函数以获取指定的了滚动控件或分隔窗I I的指针LoadFrame调用以从资源信息屮动态构造一个框架窗口 OnAmbientProperty框架调用这个成员函数以从包含OLE控件的窗口获得ambient属性值。重载这个函数以改变OLE控件容器向它的控件返回的缺省ambient属性值。任何没冇被重载函数处理的ambient属性请求将被传递到慕类的实现中OnChildNotify该函数为重载函数,作为部分消息映射被调用,告诉父窗口即将被告知一个窗口刚刚被创建 OnCmdMsg该函数的功能首先按字节对消息进行排序,对于WM_COMMAND 消息,调用OnCommand消息响应函数,对于WM_NOTIFY消息调用OnNotify 消息响应函数。任何被遗漏的消息将是一个窗I I消息。OnWndMsg函数搜索类的消息映像,以找到一个能处理任何窗口消息的处理函数。如果OnWndMsg函数不能找到这样的处理函数的话,则把消息返冋到WindowProc函数,由它将消息发送给DefWindowProc函数 OnCommand该函数查看这是不是一个控件通知,如果它是,OnCommand函数会试图将消息映射到制造通知的控件;如杲他不是一个控件通知,OnCommand 就会调用OnCmdMsg函数 OnCreateClient为框架构造一个用户窗口 OnFinalRelease木函数在对对象的最后一个OLE参考或对象对别人的后一个OLE 参考被释放时,由框架调用 OnNotify框架调用这个函数以通知控件的父窗I」,在控件中发生了一个事件,或者该控件需要某些类型的信息。OnNotify处理控件通知的消息映射OnSetPreviewMode 设置应用的主框架成为或退出预打印模式 PostNcDestroy在窗口被销毁以后,缺省的OnNcDestroy成员函数调用这个函数。派生类可以利用这个函数來执行自定义的清除工作,比如删除指针PreCreateWindow该函数是一个重载函数,在窗I I被创建而,可以在该重载函数屮改变创建参数 PreSubclassWindow这也是一个重载函数,允许首先子分类一个窗口PreTranslateMessage 在消息被分派至U Windows 函数TranslateMessage 和

CString类所有成员函数详解

CString类所有成员函数详解 2009-03-27 10:53 CString类所有成员函数详解 VC里CString是我们最常用的类之一,我们觉得对它很熟悉了,可是你知道它的所有用法吗? 还是系统的学习一下吧,认真看完本文就OK了。 下面开始: CString::Compare int Compare( LPCTSTR lpsz ) const; 返回值字符串一样返回0 小于lpsz 返回-1 大于lpsz 返回1 区分大小字符 CString s1( "abc" ); CString s2( "abd" ); ASSERT( https://www.360docs.net/doc/b06813531.html,pare( s2 ) == -1 ); ASSERT( https://www.360docs.net/doc/b06813531.html,pare( "abe" ) == -1 ); CString::CompareNoCase int CompareNoCase( LPCTSTR lpsz ) const; 返回值字符串一样返回0 小于lpsz 返回-1

大于lpsz 返回1 不区分大小字符 CString::Collate int Collate( LPCTSTR lpsz ) const; 同CString::Compare CString::CollateNoCase int CollateNocase( LPCTSTR lpsz ) const; 同CString::CompareNoCase CString::CString CString( ); CString( const CString& stringSrc ); CString( TCHAR ch, int nRepeat = 1 ); CString( LPCTSTR lpch, int nLength ); CString( const unsigned char* psz ); CString( LPCWSTR lpsz ); CString( LPCSTR lpsz ); 例子最容易说明问题 CString s1; CString s2( "cat" ); CString s3 = s2; CString s4( s2 + " " + s3 ); CString s5( 'x' ); // s5 = "x"

在名字空间中声明类和成员函数

在名字空间中声明类和成员函数 赵湘宁 虽然很多程序员都熟悉名字空间的概念,但他们常常都是被动地使用名字空间。也就是说他们使用的是第三方定义的成员(如标准库的类和函数),而不是在名字空间中声明自己的类和函数。本文拟讨论如何在名字空间中声明自己的类和函数,以及如何在程序中使用它们。 名字空间是一个范畴,它包含类声明,函数声明,常量声明和模板声明等名字空间成员。例如: namespace proj_alpha { //下面是名字空间proj_alpha 的成员 class Spy {/*..*/}; void encrypt (char *msg); const int MAX_SPIES = 8; } 在上面的例子中,类Spy在一个单独的文件中实现。通常,你是在一个专门的头文件中声明一个类并在不同的源文件中独立地定义其成员函数。那么如何将名字空间成员类分离成多个源文件呢? 下面是名为Foo.hpp 的头文件,其中定义了一个名为NS的名字空间,它包含类Foo的声明: //Foo.hpp namespace NS { class Foo { public: void f(); void g(); }; }//close NS 另外,在一个单独的源文件Foo.cpp中,首先包含头文件Foo.hpp以便实现类Foo的成员函数f()和g(): //Foo.cpp #include "Foo.hpp" void NS::Foo::f() { /*..*/ } void NS::Foo::g()

{ /*..*/ } 为了使用名字空间成员,必须使用成员的全路径名,它由名字空间后跟::合成原名组成。因此,类Foo的全路径名是NS::Foo。这样编译器便可以知道NS是一个名字空间名,头文件Foo.hpp必须在引用NS之前被包含。 名字空间是可以扩展的。也就是说可以声明类,而且所声明的类在其它的.cpp文件中是相同的名字空间成员: //Bar.hpp namespace NS //扩展NS { class Bar { public: void a(); void b(); }; } 在Bar.cpp文件中: #include "Bar.hpp" void NS::Bar::a() {/*..*/} void NS::Bar::b() {/*..*/} 可以看出,虽然Foo和Bar这两个类在不同的头文件中声明,但它们都是名字空间NS的成员。并且编译器和链接器将这两个类看成是同一名字空间的成员。那么,如何在应用程序中使用这些类呢? 在文件main.cpp中,必须要包含声明类Foo和Bar的头文件并加上相应的名字空间引用声明-using: #include "Bar.hpp" #include "Foo.hpp" int main() { using NS::Bar; //使用名字空间 using NS::Foo; //同上 Bar b;

高中常用函数性质及图像汇总

高中常用函数性质及图像 一次函数 (一)函数 1、确定函数定义域的方法: (1)关系式为整式时,函数定义域为全体实数; (2)关系式含有分式时,分式的分母不等于零; (3)关系式含有二次根式时,被开放方数大于等于零; (4)关系式中含有指数为零的式子时,底数不等于零; (5)实际问题中,函数定义域还要和实际情况相符合,使之有意义。 (二)一次函数 1、一次函数的定义 一般地,形如y kx b =+(k ,b 是常数,且0k ≠)的函数,叫做一次函数,其中x 是自变量。当0b =时,一次函数y kx =,又叫做正比例函数。 ⑴一次函数的解析式的形式是y kx b =+,要判断一个函数是否是一次函数,就是判断是否能化成以上形式. ⑵当0b =,0k ≠时,y kx =仍是一次函数. ⑶当0b =,0k =时,它不是一次函数. ⑷正比例函数是一次函数的特例,一次函数包括正比例函数. 2、正比例函数及性质 一般地,形如y=kx(k 是常数,k≠0)的函数叫做正比例函数,其中k 叫做比例系数. 注:正比例函数一般形式 y=kx (k 不为零) ① k 不为零 ② x 指数为1 ③ b 取零 当k>0时,直线y=kx 经过三、一象限,从左向右上升,即随x 的增大y 也增大;当k<0时,?直线y=kx 经过二、四象限,从左向右下降,即随x 增大y 反而减小. (1) 解析式:y=kx (k 是常数,k ≠0) (2) 必过点:(0,0)、(1,k ) (3) 走向:k>0时,图像经过一、三象限;k<0时,?图像经过二、四象限 (4) 增减性:k>0,y 随x 的增大而增大;k<0,y 随x 增大而减小 (5) 倾斜度:|k|越大,越接近y 轴;|k|越小,越接近x 轴 3、一次函数及性质 一般地,形如y=kx +b(k,b 是常数,k≠0),那么y 叫做x 的一次函数.当b=0时,y=kx +b 即y=kx ,所以说正比例函数是一种特殊的一次函数. 注:一次函数一般形式 y=kx+b (k 不为零) ① k 不为零 ②x 指数为1 ③ b 取任意实数 一次函数y=kx+b 的图象是经过(0,b )和(- k b ,0)两点的一条直线,我们称它为直线y=kx+b,它可以看作由直线y=kx 平移|b|个单位长度得到.(当b>0时,向上平移;当b<0时,向下平移)

一种使类成员函数成为 Windows 回调函数的方法

问题:一种使类成员函数成为Windows 回调函数的方法( 积分:100, 回复:62, 阅读:3393 ) 分类:Object Pascal ( 版主:menxin, cAkk ) 来自:savetime, 时间:2004-6-20 2:41:00, ID:2672562 [显示:小字体| 大字体] 一种使类成员函数成为Windows 回调函数的方法 https://www.360docs.net/doc/b06813531.html, savetime2k@https://www.360docs.net/doc/b06813531.html, 2004.6.20 本文排版格式为: 正文由窗口自动换行;所有代码以80 字符为边界;中英文字符以空格符分隔。 未经作者同意请勿在在任何公共媒体转载 大富翁satanmonkey 提出一个问题:HOOK 的时候,那个回调函数怎么弄才能做成类的成员?现在回调函数不能是类成员函数,访问不了类的成员变量。 https://www.360docs.net/doc/b06813531.html,/delphibbs/dispq.asp?lid=2624773 后来又在另一篇贴子上也看到类似的问题,看来解决这个问题还有点用(我现在还不知道这有什么用处),所以趁着今天周末思考一下。 (太想睡了,下面只好草率地说明,如有不清楚请提问,或者日后有空再详作解释) 一开始我的想法是在类成员的回调函数内部复制参数的值,差不多理顺了,后来发现如果回调函数有返回值时,这种方法不行... 只好重新开工,用手工编制机器码的方法完成,其中查询JMP $00001111 这样的立即数跳转机器指令花了一个小时,结果是没有找到,只好以JMP [$00001111] 这个代码代替。如果有谁知道前一种跳转指令的机

Excel常用函数详解

计算机二级考试MS_Office应用Excel函数 =公式名称(参数1,参数2,。。。。。) =sum(计算范围) =average(计算范围) =sumifs(求和范围,条件范围1,符合条件1,条件范围2,符合条件2,。。。。。。) =vlookup(翻译对象,到哪里翻译,显示哪一种,精确匹配) =rank(对谁排名,在哪个范围里排名) =max(范围) =min(范围) =index(列范围,数字) =match(查询对象,范围,0) =mid(要截取的对象,从第几个开始,截取几个) =int(数字) =weekda y(日期,2) =if(谁符合什么条件,符合条件显示的内容,不符合条件显示的内容) =if(谁符合什么条件,符合条件显示的内容,if(谁符合什么条件,符合条件显示的内容,不符合条件显示的内容)) SUM函数 简单求和。 函数用法 SUM(number1,[number2],…) =SUM(A1:A5)是将单元格 A1 至 A5 中的所有数值相加; =SUM(A1,A3,A5)是将单元格 A1,A3,A5 中的数字相加。 SUMIFS函数 根据多个指定条件对若干单元格求和。 函数用法 SUMIFS(sum_range, criteria_range1, criteria1, [criteria_range2, criteria2], ...) 1) sum_range 是需要求和的实际单元格。包括数字或包含数字的名称、区域或单元格引用。忽略空白值和文本值。 2) criteria_range1为计算关联条件的第一个区域。 3) criteria1为条件1,条件的形式为数字、表达式、单元格引用或者文本,可用来定义将对criteria_range1参数中的哪些单元格求和。例如,条件可以表示为32、“>32”、B4、"苹果"、或"32"。 4)criteria_range2为用于条件2判断的单元格区域。 5) criteria2为条件2,条件的形式为数字、表达式、单元格引用或者文本,可用来定义将对criteria_range2参数中的哪些单元格求和。 4)和5)最多允许127个区域/条件对,即参数总数不超255个。 VLOOKUP函数 是Excel中的一个纵向查找函数,按列查找,最终返回该列所需查询列序所对应的值。

C++常数据(函数)成员精讲

C++常数据成员精讲—const关键字 更多内容:h t t p://w w w.c c t w l.c o m/ 内容提要: 用const修饰的定义对象称为常对象; 用const修饰的声明成员函数称为常成员函数; 用const修饰的声明数据成员称为常数据成员。 变量或对象被const修饰后其值不能被更新。因此被const修饰的变量或对象必须要进行初始化。 用const修饰的声明数据成员称为常数据成员。 有两种声明形式: const int cctwl; int const cctwl; int cctwl const; //这样是错误的只能有以上两种声明形式。不能省略数据类型,可以添加public private等访问控制符。 说明: 1.任何函数都不能对常数据成员赋值。 2.构造函数对常数据成员进行初始化时也只能通过初始化列表进行。 3.常数据成员在初始化时必须赋值或称其必须初始化. 4.如果类有多个默认构造函数必须都初始化常数据成员。 通过下面例子来理解常数据成员以上4点。 A、请指出下面程序的错误 class A

{ private: int w,h; const int cctwl=5; //错误一 public: }; void main() { A a ; //错误二 cout<< "sss"; system("pause"); } 错误一:不能对常数据成员在类中初始化、要通过类的构造函数,只有静态常量才能这样初始化。 错误二:没有合适的默认构造函数可用。因为有常量cctwl没有初始化必须初始化所有常数据成员。 更正后结果如下: class A{ private: int w,h; const int cctwl; public: const int cctwlcom;//常对象可以是共有私有等访问权限

Creo常用函数

Creo(PROE)中关系式的理解 一)关系式中可以用下列数学函数式表达: 1)、正弦 sin( ) 2)、余弦 cos( ) 3)、正切 tan( ) 4)、反正弦 asin( ) 5)、反余弦 acos( ) 6)、反正切 atan( ) 7)、双曲线正弦 sinh( ) 8)、双曲线余弦 cosh( ) 9)、双曲线正切 tanh( ) 以上九种三角函数式所使用的单位均为“度”。 10)、平方根 sqrt( ) 11)、以10为底的对数 log( ) 12)、自然对数 ln( ) 13)、e的幂 exp( ) 14)、绝对值 abs( ) 15)、不小于其值的最小整数(上限值) ceil( ) 16)、不超过其值的最大整数(下限值) floor( ) 可以给函数ceil和floor加一个可选的自变量,用它指定要圆整的小数位数。 带有圆整参数的这些函数的语法是: ceil(parameter_name或number, number_of_dec_places) floor (parameter_name 或 number, number_of_dec_places) 其中的parameter_name或number意为参数名称或者一个带小数位的精确数值 后面跟随着的number_of_dec_places意为十进位的小数位数,是可选值: A)可以被表示为一个数或一个使用者自定义参数。如果该参数值是一个实数,则被截尾成为一个整数。 B)它的最大值是8。如果超过8,则不会舍入要舍入的数(第一个自变量),并使用其初值。C)如果不指定它,则功能同前期版本一样。 使用不指定小数部分位数的ceil和floor函数,其举例如下: ceil (10.2) 值为11 floor (10.2) 值为 10

如何让类的成员函数作为回调函数

如何让类的成员函数作为回调函数 为什么类(class)的成员函(member function)数不能作为回调函数(callback function) 首先来看看回调函数有怎样的特点。windows中,回调函都显式(explicit)使用CALLBACK修饰符(decorator)修饰 (decorated)。实际上CALLBACK就是_stdcall 参数传递方式(calling convention)的宏定义。MSDN中对__stdcall做了如下定义: The __stdcall calling convention is used to call Win32 API functions. The callee cleans the stack, so the compiler makes vararg functions __cdecl. Functions that use this calling convention require a function prototype. 其中心思想是,__stdcall修饰的函数,参数从右至左依次压入堆栈,被调用者(callee)负责平衡堆栈(clean also called ‘stack unwinding handling’)。 下面来看看类的成员函数有怎样的特点。在VC++中,所有类的成员函数在定义的时候都被隐式(implicit)定义为__thiscall参数传递方式。在MSDN 中对 __thiscall做了如下定义: The __thiscall calling convention is used on member functions and is the default calling convention used by C++ member functions that do not use variable arguments. Under __thiscall, the callee cleans the stack, which is impossible for vararg functions. Arguments are pushed on the stack from

CDC类的主要绘图成员函数

CDC类的主要绘图成员函数 CDC类中常用绘图函数 1)绘制像素函数 原型:COLORREF SetPixel(int x,int y,COLORREF crColor ); 设置某像素点的RGB值 2)获取像素颜色函数 原型:COLORREF GetPixel(int x,int y)const; 返回值:指定像素的RGB值。 参数说明:得到指定像素的RGB颜色值 一、画笔函数 画笔是用来绘制直线、曲线或图形的边界线,是绘图工具类之一 画笔通常具有线型、宽度和颜色三种属性 画笔的线型通常有实线、虚线、点线、点划线、双点划线、不可见线和内框架线7种,这些线型都是以PS_为前缀的预 定义标识符 默认的画笔是一个像素单位的黑色实线 要想更换画笔,可以在创建新画笔对象后,将其选入设备上下文,就可使用新画笔进行绘图。 1)创建画笔函数 原型:BOOL CreatePen(int nPenStyle,int nWidth,COLORREF crColor);

返回值:非零。 参数说明: 第一个参数nPenStyle是画笔的风格代码 第二个参数nWidth是画笔的宽度 第三个参数crColor是画笔的颜色。 PS_SOLID;实线;宽度任意指定 PS_DASH;虚线;宽度1(不可任意指定) PS_DOT;点线;宽度1(不可任意指定) PS_DASHDOT;点划线;宽度1(不可任意指定) PS_DASHDOTDOT;双点画线;宽度1(不可任意指定) PS_NULL;不可见线;宽度1(不可任意指定) PS_INSIDEFRAME;内框架线;宽度任意指定 2)选择画笔函数 原型:Cpen *SelectObject(Cpen *pPen); 返回值:被替代画笔的指针。 参数说明:参数pPen是Cpen类的被选中的新画笔对象指针。本函数把原画笔换成新画笔,同时返回指向原画笔的指针。 3)删除画笔函数 原型:BOOL DeleteObject( ); 返回值:非零。 参数说明:画笔使用完毕,把已成自由状态的画笔从系统内存中清除。 4)选择一支库画笔函数 原型: virtual CGdiObject *SelectStockObject(int nIndex); 返回值:被替代的CGdiObject类对象的指针。 参数说明:参数nIndex是库笔代码 Windows系统中准备了一些使用频率较高的画笔,不需要创建,可以直接选用。同样,使用完库画笔时也不需要调用 DeleteObject()函数从内存中删除已使用过的画笔。 三种常用库笔:BLACK_PEN宽度为1的黑笔实线笔;WHITE_PEN宽度为1的白笔实线笔;NULL_PEN透明笔 二、画刷函数(图形内部进行填充) 1)创建实体画刷函数 BOOL CreateSolidBrush(COLORREF crColor ); 选择画刷函数 2)CBrush *SelectObject(CBrush *pBrush ); 删除画刷函数 3)BOOL DeleteObject( ); 创建阴影画刷函数 4)BOOL CreateHatchBrush(int nIndex,COLORREF crColor);

关系中常用函数详解

在ProE中,我们的关系可以直接很多系统已经预定义好的函数,通过这些函数我们可以来进行一些特定的运算得到所期望的值,下面我们就对一些常用函数进行一个概括和总结,方便大家在使用的时候查阅。 1.数学函数 在proe中,我们可以使用丰富的数学函数,常用的函数列表如下: sin()、cos()、tan()函数 这三个都是数学上的三角函数,分别使用角度的度数值来求得角度对应的正弦、余弦和正切值,比如: A=sin(30) A=0.5? B=0.866?B=cos(30) ?C=tan(30) C=0.577 asin()、acos()、atan()函数 这三个是上面三个三角函数的反函数,通过给定的实数值求得对应的角度值,如:A=asin(0.5) A=30? B=60?B=acos(0.5) C=26.6?C=atan(0.5)

sinh()、cosh()、tanh()函数 在数学中,双曲函数类似于常见的(也叫圆函数的)三角函数。基本双曲函数是双曲正弦“sinh”,双曲余弦“cosh”,从它们导出双曲正切“tanh”等。 sinh / 双曲正弦:sinh(x) = [e^x - e^(-x)] / 2 cosh / 双曲余弦:cosh(x) = [e^x + e^(-x)] / 2 tanh / 双曲正切:tanh(x) = sinh(x) / cosh(x)=[e^x - e^(-x)] / [e^x + e^(-x)] 函数使用实数作为输入值 log()函数 求得10为底的对数值,如: A=log(1) A=0;? A=1;?A=log(10) ?A=log(5) A=0.6989...; ln()函数 求得以自然数e为底的对数值,e是自然数,值是2.718...;如: A=ln(1) A=0;? ?A=ln(5) A=1.609...;

成员函数中访问对象的私有成员问题

问题(知识点)描述: a.在C++的类的成员函数中,允许直接访问该类的对象的私有成员变量。 b.在类的成员函数中可以访问同类型实例的私有变量。 c.拷贝构造函数里,可以直接访问另外一个同类对象(引用)的私有成员。 d.类的成员函数可以直接访问作为其参数的同类型对象的私有成员。 举例描述上述知识: 1).在拷贝构造函数中可以访问引用对象的私有变量:例如: class Point { public: Point(int xx=0,int yy=0){X=xx;Y=yy;} Point(Point &p); private: int X,Y; }; Point::Point (Point &p) { X=p.X; Y=p.Y; } 2).在类的成员函数中可以访问同类型实例的私有变量 class A { public: int getA() const { return a; } void setA(int val) { a = val; } void assign(A& _AA) { this->a = _AA.a; _ AA.a = 10; //可以直接访问 } void display() { cout<<"a:"< using namespace std; class TestClass { public: TestClass(int amount) { this->_amount = amount; } void UsePrivateMember() { cout<<"amount:"<_amount<

C++ string 成员函数汇总

C++ string 成员函数汇总 原址:https://www.360docs.net/doc/b06813531.html,/shazi129/blog/item/c3ad059b636db8b6c9eaf490.html string类的构造函数: string(const char *s); //用c字符串s初始化 string(int n,char c); //用n个字符c初始化 此外,string类还支持默认构造函数和复制构造函数,如string s1;string s2="hello";都是正确的写法。当构造的string太长而无法表达时会抛出length_error异常 string类的字符操作: const char &operator[](int n)const; const char &at(int n)const; char &operator[](int n); char &at(int n); operator[]和at()均返回当前字符串中第n个字符的位置,但at函数提供范围检查,当越界时会抛出out_of_range异常,下标运算符[]不提供检查访问。 const char *data()const;//返回一个非null终止的c字符数组 const char *c_str()const;//返回一个以null终止的c字符串 int copy(char *s, int n, int pos = 0) const;//把当前串中以pos开始的n个字符拷贝到以s为起始位置的字符数组中,返回实际拷贝的数目 string的特性描述: int capacity()const; //返回当前容量(即string中不必增加内存即可存放的元素个数) int max_size()const; //返回string对象中可存放的最大字符串的长度 int size()const; //返回当前字符串的大小 int length()const; //返回当前字符串的长度 bool empty()const; //当前字符串是否为空 void resize(int len,char c);//把字符串当前大小置为len,并用字符c填充不足的部分 string类的输入输出操作: string类重载运算符operator>>用于输入,同样重载运算符operator<<用于输出操作。 函数getline(istream &in,string &s);用于从输入流in中读取字符串到s中,以换行符'\n'分开。 string的赋值: string &operator=(const string &s);//把字符串s赋给当前字符串 string &assign(const char *s);//用c类型字符串s赋值 string &assign(const char *s,int n);//用c字符串s开始的n个字符赋值 string &assign(const string &s);//把字符串s赋给当前字符串 string &assign(int n,char c);//用n个字符c赋值给当前字符串

初中常用函数及其性质

一.正比例函数的性质 1.定义域:R(实数集) 2.值域:R(实数集) 3.奇偶性:奇函数 4.单调性:当k>0时,图像位于第一、三象限,y随x的增大而增大(单调递增);当k<0时,图像位于第二、四象限,y随x的增大而减小(单调递减) 5.周期性:不是周期函数。 6.对称轴:直线,无对称轴。、 二.一次函数图像和性质 一般地,形如y=kx+b(k、b是常数,且k≠0?)的函数,?叫做一次函数(?linear function).一次函数的定义域是一切实数. 当b=0时,y=kx+b即y=kx(k是常数,且k≠0?).所以说正比例函数是一种特殊的一次函数. 当k=0时,y等于一个常数,这个常数用c来表示,一般地,我们把函数y=c(c是常数)叫做常值函数(constant function)它的定义域由所讨论的问题确定. 一般来说, 一次函数y=kx+b(其中k、b是常数,且k≠0)的图像是一条直线. 一次函数y=kx+b的图像也称为直线y=kx+b. 一次函数解析式y=kx+b称为直线的表达式. 一条直线与y轴的交点的纵坐标叫做这条直线在y轴上的截距,简称直线的截距. 一般地,直线y=kx+b(k0)与y轴的交点坐标是(0,b).直线y=kx+b(k0)的截距是b. 一次函数的图像: k>0 b>0 函数经过一、三、二象限 k>0 b<0 函数经过一、二、三象限 k<0 b>0 函数经过一、二、四象限

k<0 b<0 函数经过二 、三、四象限 上面性质反之也成立 1.b 的作用 在坐标平面上画直线y=kx+b (k≠0),截距b 相同的直线经过同一点(0,b). 2.k 的作用 k 值不同,则直线相对于x 轴正方向的倾斜程度不同. (1)k>0时,K 值越大,倾斜角越大 (2)k<0时,K 值越大,倾斜角越大 说明 (1) 倾斜角是指直线与x 轴正方向的夹角; (2)常数k 称为直线的斜率.关于斜率的确切定义和几何意义,将在高中数学中讨论. 3.直线平移 一般地,一次函数y=kx+b(b0)的图像可由正比例函数y=kx 的图像平移得到.当b>0时,向上平移b 个单位;当b<0时,向下平移|b|个单位. 4.直线平行 如果k1=k2 ,b1b2,那么直线y=k1x+b1与直线y=k2x+b2平行. 如果直线y=k1x+b1与直线y=k2x+b2平行,那么k1=k2 ,b1b2 . 1.一次函数与一元一次方程的关系 一次函数 y=kx+b 的图像与x 轴交点的横坐标就是一元一次方程kx+b=0的解;反之,一元一次方程kx+b=0的解就是一次函数 y=kx+b 的图像与x 轴交点的横坐标.两者有着密切联系,体现数形结合的数学思想. 2.一次函数与一元一次不等式的关系 由一次函数 y=kx+b 的函数值y 大于0(或小于0),就得到关于x 的一元一次不等式kx+b>0(或kx+b<0).在一次函数 y=kx+b 的图像上且位于x 轴上方(或下方)的所有点,它们的横坐标的取值范围就是不等式kx+b>0(或kx+b<0)的解. 三.二次函数图像及其性质 1.定义:一般地,如果c b a c bx ax y ,,(2 ++=是常数,)0≠a ,那么y 叫做x 的一元二次函数. 2.二次函数2 ax y =的性质 (1)抛物线2ax y =)(0≠a 的顶点是原点,对称轴是y 轴. (2)函数2ax y =的图像与a 的符号关系: ①当0>a 时?抛物线开口向上?顶点为其最低点;②当0

高考中常用函数模型归纳及应用

高考中常用函数模型.... 归纳及应用 一. 常数函数y=a 判断函数奇偶性最常用的模型,a=0时,既是奇函数,又是偶函数,a ≠0时只是偶函数。关于方程解的个数问题时常用。 例1.已知x ∈(0, π],关于方程2sin(x+ 3 π )=a 有两个不同的实数解,则实数a 的取植范围是( )A .[-2,2] B.[ 3,2] C.( 3,2] D.( 3,2) 解析;令y=2sin(x+3π ), y=a 画出函数y=2sin(x+3 π ),y=a 图象如图所示,若方程有两个不同的解,则两个函数图象有两个不同的交点, 由图象知( 3,2),选D 二. 一次函数y=kx+b (k ≠0) 函数图象是一条直线,易画易分析性质变化。常用于数形结合解决问题,及利用“变元”或“换元”化归 为一次函数问题。有定义域限制时,要考虑区间的端点值。 例2.不等式2x 2 +1≤m(x-1)对一切│m │≤2恒成立,则x 的范围是( ) A .-2≤x ≤2 B. 4 31- ≤x ≤0 C.0≤x ≤ 4 71+ D. 4 71-≤x ≤ 4 1 3- 解析:不等式可化为m(x-1)- 2x 2+1≥0 设f(m)= m(x-1)- 2x 2 +1 若x=1, f(m)=-3<0 (舍) 则x ≠1则f(m)是关于m 的一次函数,要使不等式在│m │≤2条件下恒成立,只需? ? ?≥-≥0)2(0 )2(f f ,解之可得答案D 三. 二次函数y=ax 2 +bx+c (a ≠0) 二次函数是应用最广泛的的函数,是连接一元二次不等式和一元二次方程的纽带。很多问题都可以化归和转化成二次函数问题。比如有关三次函数的最值问题,因其导数是二次函数,最后的落脚点仍是二次函数问题。 例3.(1).若关于x 的方程x 2 +ax+a 2 -1=0有一个正根和一个负根,则a 的取值范围是( ) 解析:令f(x)= x 2 +ax+a 2 -1由题意得f(0)= a 2 -1 <0,即-1<a <1即可。 一元二次方程的根分布问题可借助二次函数图象解决,通常考虑二次函数的开口方向,判别式对称轴与根的位置关系,端点函数值四个方面。也可借助韦达定理。

CDC类及成员函数简介

CDC CObject └CDC CDC类定义的是设备上下文对象的类。 CDC对象提供处理显示器或打印机等设备上下文的成员函数,以及处理与窗口客户区对应的显示上下文的成员。 通过CDC对象的成员函数进行所有的绘图。 类对设备上下文操作提供了成员函数,处理绘图工具。安全型图形设备接口(GDI)对象收集,以及处理颜色和调色板。 它还为获取和设置绘图属性、映射,处理视点、窗口扩展、转换坐标,处理区域、剪贴、绘制直线及绘制简单椭圆和多边形等形状提供了成员函数。 另外还为绘制文本、处理字体,使用打印机跳转,滚动和播放元文件提供成员函数。 使用CDC对象时要构造它,然后调用与它平等的、使用设备上下文的Windows 函数的成员函数。 为了特定用途,Microsoft基本类库提供了几个CDC派生类。CPaintDC 包括BeginPaint和EndPaint调用。 CClientDC 管理窗口用户区对应的显示上下文。 CWindowDC 管理与整个窗口对应的显示上下文,包括它的结构和控件。CMetaFileDC 与带元文件的设备上下文对应。 CDC包含m_hDC和m_hAttribDC两个设备上下文,它们在CDC对象创建时参考同一个设备。 CDC指导所有对m_hDC的输出GDI调用以及对m_hAttribDC的大部分属性GDI调用(GetTextColor是属性调用的例子,而SetTextColor是一个输出调用)。例如框架使用这两个设备上下文实现CMetaFileDC对象,在从物理设备读取属性期间向元文件发送输出。 打印预览以相同风格在框架中实现。还可以以相似方法在特殊应用代码中使用这两个设备上下文。 可能多次需要来自m_hDC和m_hAttribDC设备上下文的文本度量信息。 以下几对函数提供了这项功能: 使用m_hAttribDC 使用m_hDC GetTextExtent GetOutputTextExtent GetTabbedTextExtent GetOutputTabbedTextExtent GetTextMetrics GetOutputTextMetrics GetCharWidth GetOutputCharWidth CDC类成员

相关文档
最新文档