- 博客(10)
- 收藏
- 关注
原创 纯虚函数
1.当在基类中不能为虚函数给出一个有意义的实现时,可以将其声明为纯虚函数,其实现留待派生类完成。例如,把多边形作为一个基类可以派生出三角形,正方形等子类,但多边形本身生成对象就不大合理了,这时就可以把多边形的成员函数定义为纯虚函数。 2.含有纯虚函数的类为抽象类,抽象类所包含的函数仅仅是声明,都是没有函数定义的,所以抽象类不能创建对象。
2014-08-24 22:22:55 549
原创 虚继承
class A { public: virtual ~A(){cout<<"~A"<<endl;} void funA(){cout<<"funA"<<endl;} }; class B:virtual public A { public: ~B(){cout<<"~B"<<endl;} void funB(){cout<<"funB"<<endl;} }; class C:virtu
2014-08-24 17:40:17 367
原创 虚函数
class Father { public: virtual ~Father() { cout<<"destruct father"<<endl; } void nationality() { cout<<"nationality is China"<<endl; } void born() { cout<<"was born in China"<<endl; }
2014-08-24 16:28:15 372
原创 C++ primer第五版_定义行为像值的类_行为像指针的类
//行为像值的类 class HasPtr { public: HasPtr(const std::string &s = std::string()):ps(new std::string(s)), i(0) {} HasPtr(const HasPtr &p):ps(new std::string(*p.ps)), i(p.i) {} HasPtr& operator=(const Ha
2014-08-17 17:53:37 1197
原创 C++ primer第五版_重载运算
0、定义重载的运算符是,必须首先决定是将其声明为类的成员函数还是非成员函数 1、算术、相等性、关系、位运算、输入输出等的重载应该定义成非成员函数 2、重载输出运算符的第一个形参是一个非常量(向流写入内容会改变其状态)ostream对象的引用(无法复制ostream对象),第二个形参是该类的常量(避免修改)引用(避免复制),返回ostream形参(与其它输出运算符保持一致) 3、重载输入运算符
2014-08-17 17:12:34 426
原创 C++ primer第五版_拷贝控制
0、拷贝初始化发生的情况:使用=初始化,非引用传参,返回一个对象,列表初始化数组或聚合类 1、编译器可以绕过拷贝构造函数,但拷贝构造函数必须是存在且可访问的(GCC是这样,但VS可以是private的) 2、赋值运算符通常应该返回一个指向其左侧运算对象的引用,这样可以与内置类型的赋值保持一致 3、一般需要析构函数来释放资源的类,通常也需要自己定义拷贝和赋值操作来分配资源 4、可以通过将拷贝
2014-08-17 17:09:37 631
原创 C++ primer第五版_IO库
第8章 0、导致缓冲刷新的原因有:缓冲区满、显示刷新(endl;flush;ends)、操作符(unitbuf)、关联输入和输出流。 1、设置每次输出后都刷新缓冲区:cout 2、如果程序崩溃,输出缓冲区不会被刷新。 3、从输入流读数据,往输出流写数据。 4、iostream处理控制台IO,fstream处理命名文件IO,stringstream完成内存string的IO。
2014-08-16 19:03:49 387
原创 C++ primer第五版_类
0、常量对象,以及常量对象的引用或指针只能调用常量成员函数。 1、如果非成员函数是类接口的组成部分,则这些函数的声明应该与类在同一个头文件内。 2、IO类属于不能被拷贝的类型,读取或写入的操作会改变流的内容,所以IO类以普通引用做参数。 3、拷贝构造函数的调用:初始化变量、以值的方式传参、返回一个对象。 4、使用struct关键字,则定义在第一个访问说明符之前的成员是public的;使用c
2014-08-16 18:57:02 623
原创 C++ primer第五版_表达式
第3、4章 0、对string对象中每个字符的遍历,可以使用范围for语句,for(auto c : str)。 1、理解数组声明的含义,最好从数组的名字开始按照由内向外的顺序阅读。 2、函数的调用顺序没有明确规定。 3、有4种运算符明确规定了运算对象的求值顺序:&&运算符、||运算符、条件(?:)运算符、逗号运算符。 4、const_cast只能改变运算对象的底层const。const
2014-08-16 18:54:46 355
原创 C++ primer第五版_变量和基本类型
0、赋给无符号类型一个超出它表示范围的值时,结果是初始值对无符号类型表示数值总数取模后的余数。 1、赋给符号类型一个超出它表示范围的值时,结果是初始值的二进制保留符号类型的有效位后求原码的数。 2、初始化是创建变量时赋予一个初始值,赋值是把对象的当前值擦除,而以一个新值来替代。 3、int a{12};为列表初始化,不允许丢失信息的列表初始化 int a{12.5}; 4、定义于任何函数体
2014-08-16 18:30:08 460
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人