上一页 1 ··· 3 4 5 6 7 8 下一页
摘要: cdecl 由调用者清除堆栈 stdcall 由被调的函数清除堆栈 fastcall 是把函数参数列表的前三个参数放入寄存器eax,edx,ecx,其他参数压栈。_stdcall 与 _cdecl 的区别几乎我们写的每一个WINDOWS API函数都是__stdcall类型的,首先,需要了解两者之间的区别: WINDOWS的函数调用时需要用到栈(STACK,一种先入后出的存储结构)。当函数调用完成后,栈需要清除,这里就是问题的关键,如何清除??如果我们的函数使用了_cdecl,那么栈的清除工作是由调用者,用COM的术语来讲就是客户来完成的。这样带来了一个棘手的问题,不同的编译器... 阅读全文
posted @ 2012-04-23 19:59 carbs 阅读(431) 评论(0) 推荐(0) 编辑
摘要: 类的静态成员函数往往是执行与该类相关的功能操作,但是又不涉及具体的类的对象。例如在MFC中,由句柄(窗口句柄HWND、设备句柄HDC、菜单句柄HMENU等)取得或建立(临时的)封装类对象(CWnd、CDC、CMenu等)的功能函数,都被定义为相应封装类的静态成员。如CWnd类的定义:static CWnd*PASCAL FromHandle(HWND hWnd) //取得与指定句柄建立影视关系的类对象,如果不存在,则自动创建临时对象###################################define DECLEAR_DYNAMIC(class_name)\public:\sta. 阅读全文
posted @ 2012-04-11 22:02 carbs 阅读(1414) 评论(0) 推荐(0) 编辑
摘要: 1.求下面函数的返回值(微软)int func(x){ int countx = 0; while(x) { countx ++; x = x&(x-1); } return countx;}复制代码假定x = 9999. 答案:8思路:将x转化为2进制,看含有的1的个数。 2. 什么是“引用”?申明和使用“引用”要注意哪些问题? 答:引用就是某个目标变量的“别名”(alias),对应用的操作与对变量直接操作效果完全相同。申明一个引用的时候,切记要对其进行初始化。引用声明完 毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,不能再把该引用名作为其他变量名... 阅读全文
posted @ 2012-04-10 21:31 carbs 阅读(653) 评论(0) 推荐(0) 编辑
摘要: 现有://teststatic.cppvoidTestStatic(intnCopy){staticinta=nCopy;cout<<a<<endl;}intmain(){TestStatic(1);TestStatic(2);}结果:11pressanykeytocontinue问题是:为什么这样的结果??回复内容【taodm】:static变量就这样的啊,只初始化一次。【lj860603】:static还有全局变量只能定义一次,初始化一次【Chiyer】:那你要什么样子static只在调用第一次的时候初始化所以TestStatic(1);//这个函数初始化a为1Te 阅读全文
posted @ 2012-04-10 14:28 carbs 阅读(475) 评论(0) 推荐(0) 编辑
摘要: 1、派生类的对象和基类是属于的关系,即 对象 is a X类,对象属于X类。2、多态性的概念:了解多态性之前,要熟悉引用和对象的区别:对象存储在堆中,引用(符)存储在栈中,引用符的值是对象在堆中的地址,因此通过引用符可以轻松地找到对象。一般情况下,引用符和对象属于同一类型,基类的引用指向基类的对象,派生类的引用指向派生类的对象,但是我们知道,派生类对象也属于基类,所以基类引用符可以指向派生类对象。 一个基类的引用符,可以指向多种派生类对象,具有多种不同的形态,这种现象叫多态性。这种方式经常用作设计模式中的工厂模式。 阅读全文
posted @ 2012-04-06 21:36 carbs 阅读(278) 评论(0) 推荐(0) 编辑
摘要: 怎样理解抽象类(含有至少一个纯虚函数的类)可以用作声明抽象类的指针和引用????? 阅读全文
posted @ 2012-04-06 21:35 carbs 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2012-04-06 21:21 carbs 阅读(235) 评论(0) 推荐(0) 编辑
摘要: 在一个基类或派生类的成员函数中,可以直接调用等级中的虚函数。此时,需要根据成员函数中this指针和它所指向的对象来判断调 用的是哪个函数。 阅读全文
posted @ 2012-04-06 20:59 carbs 阅读(456) 评论(0) 推荐(0) 编辑
摘要: class Base{protected: Base(){} ~Base(){}public: virtual void print() { cout<<"Base::print()!"<<endl; }};class Derived:public Base{public: Derived(){} ~Derived(){}private: void print() { cout<<"Derived::print()!"<<endl; }};int main(int argc,char*argv[]){ De 阅读全文
posted @ 2012-04-06 20:43 carbs 阅读(1115) 评论(0) 推荐(0) 编辑
摘要: 对于普通成员函数的重载,可表达为下面的方式:1) 在同一个类中重载2) 在不同类中重载3) 基类的成员函数在派生类中重载因此,重载函数的访问是在编译时区分的,有以下三种方法:1.根据参数的特征加以区分,例如: Show(int , char)与Show(char *, float) 不是同一函数,编译能区分。2. 使用“::”加以区分,例如: Circle :: Show有别于Point :: Show 3. 根据类对象加以区分。 ACircle.Show() 调用Circle::Show() APoint.Show() 调用Point :: Show() 这里ACircle和APoint分. 阅读全文
posted @ 2012-04-06 20:40 carbs 阅读(321) 评论(0) 推荐(0) 编辑
摘要: 1.虚基类的概念 在C++语言中,一个类不能被多次说明为一个派生类的直接基类,但可以不止一次地成为间接基类。这就导致了一些问题。为了方便 说明,先介绍多继承的“类格”表示法。 派生类及其基类可用一有向无环图(DAG)表示,其中的箭头表示“由派生而来”。类的DAG常称为一个“类格”。复杂类格画出来通常更容易理解。例如: 例 5-19 class L { public: int next; … }; class A : public L { }; class B : public L { }; class C : ... 阅读全文
posted @ 2012-04-06 12:22 carbs 阅读(5391) 评论(0) 推荐(5) 编辑
摘要: #include <iostream>#include <string>using namespace std;class Person{public: Person( string aName=“”, bool aSex=true, int aAge=0 ); void display() const;protected: string m_strName; bool m_bSex; int m_iAge;};Person::Person( string aName,bool aSex,int aAge ) :m_strName(aName), m_bS... 阅读全文
posted @ 2012-04-04 22:05 carbs 阅读(369) 评论(0) 推荐(0) 编辑
摘要: #include <iostream>using std::cout;class A{private: int m_iVal;};class B:public A{ double m_iVal; //试图修改基类中的m_iVal从int变为float是不可能的,B中有两个m_iVal ,关于更多内容后面介绍!};int main(){ A a; B b; cout << sizeof(a) << " " << sizeof(b) << endl; return 0;} 阅读全文
posted @ 2012-04-04 21:49 carbs 阅读(325) 评论(0) 推荐(0) 编辑
摘要: #include <iostream>using namespace std;void foo(){ class Bar { public: enum test {one,two}; typedef int INTE; Bar(int arg=0):m_iVal(arg) { } int get() const { return m_iVal; } private: int m_iVal; };Bar obj(100);//INTE a; // ERROR//cout << one << endl; // ERROR//test en; // ERROR c 阅读全文
posted @ 2012-04-04 20:04 carbs 阅读(439) 评论(0) 推荐(0) 编辑
摘要: enum ListStatus {Good, Empty, Corrupted};class List{private: class ListItem; //......public: enum ListStatus {Good, Empty, Corrupted}; //......};class List::ListItem{public: ListStatus status; //List::ListStatus}; 阅读全文
posted @ 2012-04-04 19:33 carbs 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 在外围类作用域之外引用外围类的静态成员,类型名和枚举名都要求有解析操作符List::pFunc myAction;//OKList::ListStatus stat = List::Empty;//OK引用枚举值时不能写成下面形式,因为枚举定义并不像类定义一样,他不产生名字空间List::ListListStatus::Empty//errorList::Empty;//OK 阅读全文
posted @ 2012-04-04 19:27 carbs 阅读(250) 评论(0) 推荐(0) 编辑
摘要: class List{private: class ListItem;//声明 class Red { ListItem *pli; //在看到类体前只能定义该类的指针或引用 }; class ListItem //定义 { Red *pref; }; 嵌套类本质是另一个类的"类型成员",两个类作为两个命名空间,成员名可相同 //即这两个nod类声明为同一个名字是没有关系的class Node{};class Tree{public: int m_iVal; class Node //Tree::Node隐藏了::Node { int m_iVal; }; Node *tr 阅读全文
posted @ 2012-04-04 17:04 carbs 阅读(295) 评论(0) 推荐(0) 编辑
摘要: class List{public: int init( int );private: class ListItem;};class List::ListItem{public: static int value; void mf( const List &r); int memb;};int List::ListItem::value;void List::ListItem::mf(const List &r){ }int main(){ return 0;} 阅读全文
posted @ 2012-04-04 17:00 carbs 阅读(387) 评论(0) 推荐(0) 编辑
摘要: 嵌套类的成员函数(或静态成员)可以在嵌套类外定义,但不能在外围类中实现,只能在外围类之外实现。class List{public: int init( int );private: class Item { public: void mf( const List &r); static int value; int memb; };};int List::Item::value;void List::Item::mf(const List &r) //这里也是直接穿过private{ }int main(){ return 0;} 阅读全文
posted @ 2012-04-04 16:56 carbs 阅读(627) 评论(0) 推荐(0) 编辑
摘要: 代码如下:#include<iosteam>class M{public:M(int a){A = a;B+=a;//这里每调用一次构造函数不就重新刷新一次B了吗?用这种方法记录生成对象的个数??}static void f1(M m);private:int A;static int B;};void M::f1(M m){cout<<"A="<<m.A;//在静态成员函数中,只能通过对象访问类的非静态成员cout<<"B="<<B;//B是静态成员,可以在静态成员函数中访问}int M::B 阅读全文
posted @ 2012-04-04 16:03 carbs 阅读(2542) 评论(0) 推荐(0) 编辑
上一页 1 ··· 3 4 5 6 7 8 下一页