C++_Primer
文章平均质量分 59
shiyang6017
这个作者很懒,什么都没留下…
展开
-
16.6 模板特化
1. 函数特化templatevoid template_fun(const Type& t) { std::cout << "template_fun" << std::endl; std::cout << t << std::endl;}/* 函数特化, *注意:1.所有特化(包括2、3、4)必须出现在对该模板实例的调用之前, 2. 优先选择特化实例,当不匹配时,才选择模原创 2016-09-08 21:42:18 · 292 阅读 · 0 评论 -
C++_Primer chapter9 3.顺序容器的操作
#include #include using namespace std;int main() { vector vec(20, 1); cout << vec.capacity() << endl; // print 20 cout << vec.size() << endl; // print 20 vec.reserve(100); // 预留空间 cout << v原创 2016-09-16 22:32:27 · 207 阅读 · 0 评论 -
C++_Primer_chapter18 5.联合(union)
class Token {public: enum TokenType {CHAR, INT, DOUBLE}; TokenType tok; union { // 匿名联合 char _char; int _int; double _double; };};void print(Token token);int main() { Token token; toke原创 2016-09-20 10:47:59 · 323 阅读 · 0 评论 -
C++_Primer 15.8 句柄类与继承
15.7 容器与继承在C++中,这类问题有一种通用的解决办法,称为句柄类。它大体上完成两方面的工作:1.管理指针。这与智能指针的功能类似2.实现多态。利用动态绑定,是得指针既可以指向基类,也可以指向派生类。句柄类的设计需要重点考虑两个因素:1.如何管理指针2.是否屏蔽它所管理的基类和派生类的接口。这意味着,如果我们充分了解继承成层次的接口,那么就能直转载 2016-09-06 22:39:46 · 407 阅读 · 0 评论 -
C++_Primer 16.1 模板定义
函数模板一.注意事项:1.1 模板类型形参跟一般的形参类似,具有屏蔽外围变量类型的作用,在模板中,T表示的是模板类型,而不是double。typedef double T; template T foo(const T &val) { T tmp = val; return tmp; } 1.2 模板形参的名字不能在模板内部重用:转载 2016-09-07 12:26:05 · 379 阅读 · 0 评论 -
C++_Primer 15.5 继承情况下的类作用域
15.5.3 作用域与成员函数在基类和派生类中使用同一名字的成员函数,其行为与数据成员一样:在派生类作用域中派生类成员将屏蔽基类成员。即使函数原型不同,基类成员也会被屏蔽。struct Base { void memfcn() { cout << "Base : memfcn" << endl; }};struct Derived : Base { void memf原创 2016-09-06 19:05:56 · 272 阅读 · 0 评论 -
C++_Primer 16.2 实例化
编译器对待模版时,总会用它产生特定类型的版本,这个过程成为实例化。其中函数模板在调用时或者用它对指向函数的指针初始化或者赋值时实例化,类模板在引用实际模板类型时实例化。尤其对于函数模板,编译器通常会进行实参的推断。伴随而来的问题跟函数重载类似,就是确定匹配的模板。1. 对于模板,多个类型的实参必须完全匹配,不能依靠隐式的类型转换,其中两个类型形参的类型是完全相同的,则不能调用:templa转载 2016-09-07 13:52:46 · 230 阅读 · 0 评论 -
C++_Primer_chapter17 2.命名空间
#include namespace ns { class Cls{ /* * 知识点1: * 如果不存在可见的声明,那么,友元声明具有将该函数或类的声明放入外围作用域的效果 * 即:类Cls在命名空间ns内内部定义,则没有另外声明的友元函数fun 页相当于在命令空间内ns中声明,如下列“//”所示 */ friend void print(const Cls&原创 2016-09-13 17:09:11 · 241 阅读 · 0 评论 -
16.4 类模板成员
Queue的实现:1. 类定义#include // 知识点:声明Queue模板类, 第三行的友类申明才成立template class Queue; template std::ostream& operator&); template class QueueItem { // 知识点: 限制其他类型的Queue访问 QueueItem friend class Queue;原创 2016-09-08 10:50:47 · 396 阅读 · 0 评论 -
C++_Primer chapter17 1.异常处理
class Book {public: Book(const std::string& str) try:ISDN(str) {//知识点 if (str.empty()) throw std::runtime_error("ISDN is empty"); } catch (std::runtime_error& e) { std::cout << e.what() <<原创 2016-09-09 22:31:16 · 271 阅读 · 0 评论 -
C++_Primer_chapter18 7.3 链接指示:extern “C”
// c.h头文件#ifndef C_H#define C_H#ifdef __cplusplusextern "C" {#endif void print(int i);#ifdef __cplusplus}#endif#endif// c.cpp 源文件#include "c.h"#includevoid print(int i) { std::co原创 2016-09-20 22:03:45 · 276 阅读 · 0 评论 -
C++_Primer_chapter18 7.2 volatile
1. volatile 关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如:操作系统、硬件或者其它线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。声明时语法:volatile int vInt; 当要求使用 volatile 声明的变量的值的时候,系统总是重新从它所在的内存读取数据,即使它前面转载 2016-09-20 15:54:08 · 289 阅读 · 0 评论 -
C++_Primer_chapter18 2. 运行时类型识别
一、dynamic_cast#include class base {public: virtual ~base() { } virtual void isWhat() { std::cout << "base" << std::endl; }};class derived: public base {public: void isWhat() { std::cou原创 2016-09-21 10:38:43 · 256 阅读 · 0 评论 -
C++_Primer_chapter17 3.多重继承与虚继承
class Base1 {// 二义性public: void print() { }};class Base2 {private: void print(int i) { }};class Derived : public Base1, public Base2 {};int main() { Derived* d = new Derived(); /* *原创 2016-09-13 19:41:58 · 173 阅读 · 0 评论 -
C++_Primer_chapter18 3.类成员的指针
#include class Example{public: int elem; Example(int e) : elem(e) {} int getElem() const{ return elem; } void setElem(int e) { elem = e; }};void fun() { }int main() { Example example原创 2016-09-21 16:02:16 · 233 阅读 · 0 评论 -
C++_Primer_chapter18 4.嵌套类
定义:在一个类的内部定义另一个类,我们称之为嵌套类(nested class),或者嵌套类型。之所以引入这样一个嵌套类,往往是因为外围类需要使用嵌套类对象作为底层实现,并且该嵌套类只用于外围类的实现,且同时可以对用户隐藏该底层实现。 虽然嵌套类在外围类内部定义,但它是一个独立的类,基本上与外围类不相关。它的成员不属于外围类,同样,外围类的成员也不属于该嵌套类。嵌套类的出现只是告诉外围类转载 2016-09-21 19:46:10 · 270 阅读 · 0 评论 -
C++ Primer 7.9 指向函数的指针
#include using namespace std;typedef void (*Fun) (int); // 1. 用typedef简化函数指针的定义void function_Of_Long_Name(int i ) { cout << "fun fuction!"<<endl;}void special_Fun(Fun f, int i) { // 3. 函数指针形参原创 2016-09-06 10:21:34 · 239 阅读 · 0 评论 -
C++_Primer_chapter8 标准IO库
string file = "file.txt"; ifstream ifstr; ifstr.open(file.c_str()); if (!ifstr) cout << "fail to open file!" << endl; while (ifstr) { string line; getline(ifstr, line);// 读取一行 istringstr原创 2016-09-08 23:18:18 · 245 阅读 · 0 评论