首先介绍一个原则LSP(Liskov Substitution Principle),如果Class D以Public方式继承Class B,则所有B对象可以派上用场的任何地方,D对象一样可以派上用场。
对于重载和重写,相信大家都已经有所了解。这里讨论一下在public继承的时候,重载函数的问题。
先看下面的例子:
1 class Base
2 {...
分类:
编程语言 时间:
2014-09-10 22:30:21
阅读次数:
197
重载操作符与转换--调用操作符和函数对象引言: 能够为类类型的对象重载函数调用操作符:一般为表示操作的类重载调用操作符!struct absInt{ int operator() (int val) { return val > 0 ? val : -val; }}...
分类:
编程语言 时间:
2014-09-07 15:59:35
阅读次数:
274
重载: a 相同的范围(在同一个类中) b 函数名字相同 c 参数不同(返回类型不足以区分重载函数) d virtual关键字可有可无重写:(实际上就是虚函数动态绑定) a 不同的范围,分别位于基类和派生类中 b 函数的名字相同 c 参数相同 e 一般情况下返回类型相同(除非返回类型分别为基类指针和...
分类:
其他好文 时间:
2014-09-05 19:41:01
阅读次数:
162
??
lambda表达式
//C++ 11中的Lambda表达式用于定义并创建匿名的函数对象,以简化编程工作。Lambda的语法形式如下:
//[函数对象参数](操作符重载函数参数)mutable或exception声明->返回值类型{
函数体 }
//可以看到,Lambda主要分为五个部分:
//[函数对象参数]、(操作符重载函数参数)、...
分类:
其他好文 时间:
2014-08-31 22:59:32
阅读次数:
341
前言 标题一看似乎是非常直观简单,没必要特别写下一篇随便记录。 然而,在实际开发中,你会发现做到这一点对于经验不足的 C++ 程序员来说绝对是一个挑战。 要做到复制每一个成分,就一定小心下面说到的两点。第一点:类中新增了成员变量之后,需要在自定义的构造函数,析构函数,赋值运算符重载函数,拷贝构...
分类:
其他好文 时间:
2014-08-30 17:41:39
阅读次数:
222
前言 如果系统自动生成的赋值运算符重载函数不合乎你的要求,那么就应当定制自己的赋值运算符。 然而,定制赋值运算符有两点是非常值得注意的,本文将讲解这两点,让你写出更优质的 =运算符。第一点:请返回 reference to *this 我们经常使用如 "a=b=c=1" 这种形式的连锁赋值语句...
分类:
其他好文 时间:
2014-08-30 16:17:29
阅读次数:
209
前言 如果你不想要编译器帮你自动生成的拷贝机制 (参考前文),那么你应当明确的拒绝。 如何拒绝?这便是本文要解决的主要问题。问题描述 当你定义了一个类,而这个类中各对象之间也是封装的 - 禁止同类对象之间的相互赋值以及复制,那么你需要屏蔽掉编译器帮你生成的拷贝构造函数以及赋值运算符。 在许多...
分类:
其他好文 时间:
2014-08-28 22:31:06
阅读次数:
264
1.静态联编,是程序的匹配,连接在编译阶段实现,也称为早期匹配。重载函数使用静态联编。
2.动态联编是指程序联编推迟到运行时进行,所以又称为晚期联编。switch语句和if语句是动态联编的例子。
#include
void go(int num)
{
}
void go(char *str)
{
}
//class
//::在一个类中
class A
{
public:
voi...
分类:
其他好文 时间:
2014-08-27 14:48:28
阅读次数:
212
前言 对于一个类来说,最最基础的三类成员函数莫过于:构造函数,析构函数以及拷贝函数 (copy构造函数和=重载函数)。即使你的类没有为这些函数做出定义,C++ 也会自动为你创建。本文将讲述的是 C++ “偷偷”为你创建的这三个函数究竟是怎么样的。 了解这些,能更清楚代码是如何运转的,从而写出自己.....
分类:
编程语言 时间:
2014-08-24 12:51:22
阅读次数:
236
C++:重载函数2(计算面积)时间限制(普通/Java):1000MS/3000MS 运行内存限制:65536KByte总提交:370 测试通过:241描述定义重载函数area(),分别计算正方形、长方形和三角形的面积。输入共计有3行。第1行有一个实数,为正方...
分类:
其他好文 时间:
2014-08-14 00:49:07
阅读次数:
240