摘要:
一、纯虚函数定义. 纯虚函数是在基类中声明的虚函数,它在基类中没有定义,但要求任何派生类都要定义自己的实现方法。在基类中实现纯虚函数的方法是在函数原型后加“=0”二、引入原因:1、为了方便使用多态特性,我们常常需要在基类中定义虚拟函数。2、在很多情况下,基类本身生成对象是不合情理的。例如,动物作为一个基类可以派生出老虎、孔雀等子类,但动物本身生成对象明显不合常理。 为了解决上述问题,引入了纯虚函数的概念,将函数定义为纯虚函数(方法:virtual ReturnType Function()= 0;),则编译器要求在派生类中必须予以重载以实现多态性。同时含有纯虚拟函数的类称为抽象类,它不能生..
阅读全文
posted @ 2013-09-28 09:45
可笑痴狂
阅读(41002)
推荐(2)
摘要:
1 /** 2 * C++ 面向对象编程的一个颇具讽刺意味的地方是:不能使用对象支持面向对象编程, 3 *相反,必须使用指针或引用,例如: 4 */ 5 void get_prices(Item_base object, const Item_base *pointer, const Item_base &reference) 6 { 7 //下边的两个调用在运行时进行动态绑定 8 cout net_price(1) 7 8 inline bool compare(const Sales_item &lhs, const Sales_item &rhs) 9 {10..
阅读全文
posted @ 2013-09-28 08:42
可笑痴狂
阅读(755)
推荐(0)
摘要:
所谓虚函数是指: 在类中被声明为virtual的成员,基类希望这种成员在派生类中重定义。除了构造函数外,任意非static成员都可以为虚成员。保留字 virtual 只在类内部的成员函数声明中出现,不能用在类定义体外部出现在函数定义上。protected标号: protected为受保护的访问标号,protected成员可以被该类的成员、友元和派生类成员(非友元)访问,而不可以被该类型的普通用户访问。而private成员,只能被基类的成员和友元访问,派生类不能访问。 派生类只能通过派生类对象访问其基类的protected成员,派生类对其基类类型对象的protected成员没有特殊访问权限...
阅读全文
posted @ 2013-09-25 09:27
可笑痴狂
阅读(3010)
推荐(0)
摘要:
C++标准中并没有包含GUI,这也使得C++开发图形化界面需要依赖于第三方的库。实际上,图形界面恰恰是C++的强项,小到平常使用的各类桌面软件,大到魔兽世界这样的游戏,都是C++擅长的地方。C++之所以能做到这一点,原因在于它是一门即能提供极高的性能,又能提供良好接口的语言。C性能很高,但是封装太差;Java封装很好,但性能不适合做界面开发,更别谈大型游戏。C++的GUI库除了最为人所熟知的MFC,其实还有其它很多,这篇文章列举了8个免费且实用的C++ GUI库。C++是一种多范式,遵循自由的形式,并且通用的一门强大的编程语言,这门语言被视为是中间层次的语言,之所以这样认为,是因为它拥有高层语
阅读全文
posted @ 2013-09-23 22:21
可笑痴狂
阅读(32868)
推荐(1)
摘要:
1。在什么情况下重载操作符与内置操作符不同?在什么情况下重载操作符与内置操作符相同?不同:重载操作符必须具有至少一个类类型或枚举类型的操作数。重载操作符不保证操作数的求值顺序,例如对 && 和 || 的重载版本不再具有“短路求值”的特性,两个操作数都要进行求值,而且不规定操作数的求值顺序。相同:对于优先级和结合性及操作数的数目都不变。注意:操作符定义为非成员函数时,通常必须将它们设置为所操作类的友元示例: 1 class Sales_item 2 { 3 friend std::istream& operator >> ( std::istream&
阅读全文
posted @ 2013-09-22 16:12
可笑痴狂
阅读(1055)
推荐(0)
摘要:
1、什么是使用计数? 使用计数是复制控制成员中使用的编程技术。将一个计数器与类指向的对象相关联,用于跟踪该类有多少个对象共享同一指针。创建一个单独类指向共享对象并管理使用计数。由构造函数设置共享对象的状态并将使用计数置为1。每当由复制构造函数或赋值操作符生成一个新副本时,使用计数加1。由析构函数撤销对象或作为赋值操作符的左操作数撤销对象时,使用计数减少1。赋值操作符和析构函数检查使用计数是否已减至0,若是,则撤销对象。2、什么是智能指针?智能指针如何与实现普通指针行为的类相区别? 智能指针是一个行为类似指针但也提供其他功能的类。这个类与实现普通指针行为的类区别在于:智能指针通常接受指向动态..
阅读全文
posted @ 2013-09-22 10:16
可笑痴狂
阅读(1267)
推荐(0)
摘要:
原文地址:http://blog.csdn.net/insistgogo/article/details/66086721、为什么要引入友元函数:在实现类之间数据共享时,减少系统开销,提高效率 具体来说:为了使其他类的成员函数直接访问该类的私有变量 即:允许外面的类或函数去访问类的私有变量和保护变量,从而使两个类共享同一函数 优点:能够提高效率,表达简单、清晰缺点:友元函数破环了封装机制,尽量不使用成员函数,除非不得已的情况下才使用友元函数。2、什么时候使用友元函数:1)运算符重载的某些场合需要使用友元。2)两个类要共享数据的时候3、怎么使用友元函数:友元函数的参数: 因为友元函数没有this
阅读全文
posted @ 2013-09-20 21:41
可笑痴狂
阅读(5399)
推荐(0)
摘要:
1 /** 2 * 定义一个Employee类,包含雇员名字和一个唯一的雇员标识,为该类定义默认构造函数和参数为表示 3 * 雇员名字的string构造函数。如果该类需要复制构造函数或赋值操作符,实现这些函数 4 * 5 * 注意:static数据成员必须在类定义体的外部定义(正好一次),static成员不是通过类构造函数进行初始化 6 * 而是应该在定义时进行初始化。 7 * (保证对象正好定义一次的最好方法就是将static数据成员的定义放在包含类的非内联成员函数定义的文件中) 8 * static数...
阅读全文
posted @ 2013-09-19 07:54
可笑痴狂
阅读(733)
推荐(0)
摘要:
1.避免重复定义和初始化>说在类外定义和初始化是保证static成员变量只被定义一次的好方法。但,为什么static const int就可以在类里面初始化呢?想起C中一个函数里定义一个static变量是为了保证只初始化一次。那么,是否可以这样理解:static数据成员在类外定义和初始化是为了保证只被定义和初始化一次,这样编译器就不必考虑类的函数里面第一个对static变量的’=’操作是赋值还是初始化了。static const int可以在类里面初始化,是因为它既然是const的,那程序就不会再去试图初始化了。而且,>说static const int也必须在类外定义,类里面的只
阅读全文
posted @ 2013-09-17 22:55
可笑痴狂
阅读(12128)
推荐(4)
摘要:
1 /** 2 *有些成员必须在构造函数初始化列表中进行初始化。对于这样的成员,在构造函数体重对它们赋值不起作用。 3 *没有默认构造函数的类类型的成员,以及const或引用类型的成员,不管是哪种类型,都必须在构造函数初始化 4 *列表中进行初始化 5 */ 6 class ConstRef 7 { 8 public: 9 ConstRef(int ii);10 private:11 int i;12 const int ci;13 int &ri;14 };15 16 //错误做法17 Cons...
阅读全文
posted @ 2013-09-17 11:12
可笑痴狂
阅读(335)
推荐(0)