模板形参给枚举成员赋值

ksdjfalsfj 2014-09-16 12:36:50
你好!

在visual stuodio 2005 中,使用模板形参给枚举成员赋值失败,请问有什么办法解决吗?只能升级版本吗?
谢谢!
...全文
116 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ksdjfalsfj 2014-09-16
  • 打赏
  • 举报
回复
确实没有问题,我代码里面重新定义了一个新的COUNT,导致这里编译失败。
ksdjfalsfj 2014-09-16
  • 打赏
  • 举报
回复
template< int SIZE >
class MemPoolT : public MemPool
{
public:
    MemPoolT() : _root(0), _currentAllocs(0), _nAllocs(0), _maxAllocs(0), _nUntracked(0)	{}
    ~MemPoolT() {
        // Delete the blocks.
        for( int i=0; i<_blockPtrs.Size(); ++i ) {
            delete _blockPtrs[i];
        }
    }

    virtual int ItemSize() const	{
        return SIZE;
    }
    int CurrentAllocs() const		{
        return _currentAllocs;
    }

    virtual void* Alloc() {
        if ( !_root ) {
            // Need a new block.
            Block* block = new Block();
            _blockPtrs.Push( block );

            for( int i=0; i<COUNT-1; ++i ) {
                block->chunk[i].next = &block->chunk[i+1];
            }
            block->chunk[COUNT-1].next = 0;
            _root = block->chunk;
        }
        void* result = _root;
        _root = _root->next;

        ++_currentAllocs;
        if ( _currentAllocs > _maxAllocs ) {
            _maxAllocs = _currentAllocs;
        }
        _nAllocs++;
        _nUntracked++;
        return result;
    }
    virtual void Free( void* mem ) {
        if ( !mem ) {
            return;
        }
        --_currentAllocs;
        Chunk* chunk = static_cast<Chunk*>( mem );
#ifdef DEBUG
        memset( chunk, 0xfe, sizeof(Chunk) );
#endif
        chunk->next = _root;
        _root = chunk;
    }
    void Trace( const char* name ) {
        printf( "Mempool %s watermark=%d [%dk] current=%d size=%d nAlloc=%d blocks=%d\n",
                name, _maxAllocs, _maxAllocs*SIZE/1024, _currentAllocs, SIZE, _nAllocs, _blockPtrs.Size() );
    }

    void SetTracked() {
        _nUntracked--;
    }

    int Untracked() const {
        return _nUntracked;
    }

	// This number is perf sensitive. 4k seems like a good tradeoff on my machine.
	// The test file is large, 170k.
	// Release:		VS2010 gcc(no opt)
	//		1k:		4000
	//		2k:		4000
	//		4k:		3900	21000
	//		16k:	5200
	//		32k:	4300
	//		64k:	4000	21000
    enum { COUNT = (4*1024)/SIZE }; // Some compilers do not accept to use COUNT in private part if COUNT is private

private:
    union Chunk {
        Chunk*  next;
        char    mem[SIZE];
    };
    struct Block {
        Chunk chunk[COUNT];
    };
    DynArray< Block*, 10 > _blockPtrs;
    Chunk* _root;

    int _currentAllocs;
    int _nAllocs;
    int _maxAllocs;
    int _nUntracked;
};
enum { COUNT = (4*1024)/SIZE }; 这个
ri_aje 2014-09-16
  • 打赏
  • 举报
回复
上代码,谁知道你怎么弄的啊。
jwj070524 2014-09-16
  • 打赏
  • 举报
回复
vs2010可以哦

template <int Val>
struct Type
{
    enum { value = Val };
};

int main ()
{
    Type<2> type;
}
【原书名】 C++ Primer (4th Edition) 【原出版社】 Addison Wesley/Pearson 【作者】 (美)Stanley B.Lippman,Josée LaJoie,Barbara E.Moo 【译者】 李师贤 蒋爱军 梅晓勇 林瑛 【丛书名】 图灵计算机科学丛书 【出版社】 人民邮电出版社 【书号】 7-115-14554-7 【开本】 16开 【页码】 900 【出版日期】 2006-3-1 【版次】 4-1 【内容简介】 本书是久负盛名的C++经典教程,其内容是C++大师Stanley B. Lippman丰富的实践经验和C++标准委员会原负责人Josée Lajoie对C++标准深入理解的完美结合,已经帮助全球无数程序员学会了C++。本版对前一版进行了彻底的修订,内容经过了重新组织,更加入了C++ 先驱Barbara E. Moo在C++教学方面的真知灼见。既显著改善了可读性,又充分体现了C++语言的最新进展和当前的业界最佳实践。书中不但新增大量教学辅助内容,用于强调重要的知识点,提醒常见的错误,推荐优秀的编程实践,给出使用提示,还包含大量来自实战的示例和习题。对C++基本概念和技术全面而且权威的阐述,对现代C++编程风格的强调,使本书成为C++初学者的最佳指南;对于中高级程序员,本书也是不可或缺的参考书。本书的前言阐述了 第4版和前一版的不同之处。 【目录信息】 第1章 快速入门 1 1.1 编写简单的C++程序 2 1.2 初窥输入/输出 5 1.2.1 标准输入与输出对象 5 1.2.2 一个使用IO库的程序 5 1.3 关于注释 8 1.4 控制结构 10 1.4.1 while语句 10 1.4.2 for语句 12 1.4.3 if语句 14 1.4.4 读入未知数目的输入 15 1.5 类的简介 17 1.5.1 Sales_item类 17 1.5.2 初窥成员函数 19 1.6 C++程序 21 小结 22 术语 22 第一部分 基本语言 第2章 变量和基本类型 29 2.1 基本内置类型 30 2.1.1 整型 30 2.1.2 浮点型 32 2.2 字面值常量 34 2.3 变量 38 2.3.1 什么是变量 39 2.3.2 变量名 40 2.3.3 定义对象 42 2.3.4 变量初始化规则 44 2.3.5 声明和定义 45 2.3.6 名字的作用域 46 2.3.7 在变量使用处定义变量 48 2.4 const限定符 49 2.5 引用 50 2.6 typedef名字 53 2.7 枚举 53 2.8 类类型 54 2.9 编写自己的头文件 57 2.9.1 设计自己的头文件 58 2.9.2 预处理器的简单介绍 60 小结 62 术语 62 第3章 标准库类型 67 3.1 命名空间的using声明 68 3.2 标准库string类型 70 3.2.1 string对象的定义和初始化 70 3.2.2 String对象的读写 71 3.2.3 string对象的操作 72 3.2.4 string对象中字符的处理 76 3.3 标准库vector类型 78 3.3.1 vector对象的定义和初始化 79 3.3.2 vector对象的操作 81 3.4 迭代器简介 83 3.5 标准库bitset类型 88 3.5.1 bitset对象的定义和初始化 88 3.5.2 bitset对象上的操作 90 小结 92 术语 92 第4章 数组和指针 95 4.1 数组 96 4.1.1 数组的定义和初始化 96 4.1.2 数组操作 99 4.2 指针的引入 100 4.2.1 什么是指针 100 4.2.2 指针的定义和初始化 101 4.2.3 指针操作 104 4.2.4 使用指针访问数组元素 106 4.2.5 指针和const限定符 110 4.3 C风格字符串 113 4.3.1 创建动态数组 117 4.3.2 新旧代码的兼容 120 4.4 多维数组 122 小结 124 术语 125 第5章 表达式 127 5.1 算术操作符 129 5.2 关系操作符和逻辑操作符 131 5.3 位操作符 134 5.3.1 bitset对象或整型值的使用 135 5.3.2 将移位操作符用于IO 137 5.4 赋值操作符 137 5.4.1 赋值操作的右结合性 138 5.4.2 赋值操作具有低优先级 138 5.4.3 复合赋值操作符 139 5.5 自增和自减操作符 140 5.6 箭头操作符 142 5.7 条件操作符 143 5.8 sizeof操作符 144 5.9 逗号操作符 145 5.10 复合表达式的求值 145 5.10.1 优先级 145 5.10.2 结合性 146 5.10.3 求值顺序 148 5.11 new和delete表达式 150 5.12 类型转换 154 5.12.1 何时发生隐式类型转换 154 5.12.2 算术转换 155 5.12.3 其他隐式转换 156 5.12.4 显式转换 158 5.12.5 何时需要强制类型转换 158 5.12.6 命名的强制类型转换 158 5.12.7 旧式强制类型转换 160 小结 161 术语 162 第6章 语句 165 6.1 简单语句 166 6.2 声明语句 167 6.3 复合语句(块) 167 6.4 语句作用域 168 6.5 if语句 169 6.6 switch语句 172 6.6.1 使用switch 173 6.6.2 switch中的控制流 173 6.6.3 default标号 175 6.6.4 switch表达式与case标号 176 6.6.5 switch内部的变量定义 176 6.7 while语句 177 6.8 for循环语句 179 6.8.1 省略for语句头的某些部分 180 6.8.2 for语句头中的多个定义 181 6.9 do while语句 182 6.10 break语句 183 6.11 continue语句 184 6.12 goto语句 185 6.13 try块和异常处理 186 6.13.1 throw表达式 186 6.13.2 try块 187 6.13.3 标准异常 189 6.14 使用预处理器进行调试 190 小结 192 术语 192 第7章 函数 195 7.1 函数的定义 196 7.1.1 函数返回类型 197 7.1.2 函数形参表 198 7.2 参数传递 199 7.2.1 非引用形参 199 7.2.2 引用形参 201 7.2.3 vector和其他容器类型的形参 206 7.2.4 数组形参 206 7.2.5 传递给函数的数组的处理 209 7.2.6 main:处理命令行选项 210 7.2.7 含有可变形参的函数 211 7.3 return语句 211 7.3.1 没有返回值的函数 212 7.3.2 具有返回值的函数 212 7.3.3 递归 216 7.4 函数声明 217 7.5 局部对象 220 7.5.1 自动对象 220 7.5.2 静态局部对象 220 7.6 内联函数 221 7.7 类的成员函数 222 7.7.1 定义成员函数的函数体 223 7.7.2 在类外定义成员函数 225 7.7.3 编写Sales_item类的构造 函数 225 7.7.4 类代码文件的组织 227 7.8 重载函数 228 7.8.1 重载与作用域 230 7.8.2 函数匹配与实参转换 231 7.8.3 重载确定的三个步骤 232 7.8.4 实参类型转换 234 7.9 指向函数的指针 237 小结 239 术语 240 第8章 标准IO库 243 8.1 面向对象的标准库 244 8.2 条件状态 247 8.3 输出缓冲区的管理 249 8.4 文件的输入和输出 251 8.4.1 文件流对象的使用 251 8.4.2 文件模式 254 8.4.3 一个打开并检查输入文件的 程序 256 8.5 字符串流 257 小结 259 术语 259 第二部分 容器和算法 第9章 顺序容器 263 9.1 顺序容器的定义 264 9.1.1 容器元素的初始化 265 9.1.2 容器内元素的类型约束 267 9.2 迭代器和迭代器范围 268 9.2.1 迭代器范围 270 9.2.2 使迭代器失效的容器操作 271 9.3 顺序容器的操作 272 9.3.1 容器定义的类型别名 272 9.3.2 begin和end成员 273 9.3.3 在顺序容器中添加元素 273 9.3.4 关系操作符 277 9.3.5 容器大小的操作 278 9.3.6 访问元素 279 9.3.7 删除元素 280 9.3.8 赋值与swap 282 9.4 vector容器的自增长 284 9.5 容器的选用 287 9.6 再谈string类型 289 9.6.1 构造string对象的其他方法 290 9.6.2 修改string对象的其他方法 292 9.6.3 只适用于string类型的操作 293 9.6.4 string类型的查找操作 295 9.6.5 string对象的比较 298 9.7 容器适配器 300 9.7.1 栈适配器 301 9.7.2 队列和优先级队列 302 小结 303 术语 303 第10章 关联容器 305 10.1 引言:pair类型 306 10.2 关联容器 308 10.3 map类型 309 10.3.1 map对象的定义 309 10.3.2 map定义的类型 310 10.3.3 给map添加元素 311 10.3.4 使用下标访问map对象 311 10.3.5 map::insert的使用 313 10.3.6 查找并读取map中的元素 315 10.3.7 从map对象中删除元素 316 10.3.8 map对象的迭代遍历 316 10.3.9 “单词转换”map对象 317 10.4 set类型 319 10.4.1 set容器的定义和使用 319 10.4.2 创建“单词排除”集 321 10.5 multimap和multiset类型 322 10.5.1 元素的添加和删除 322 10.5.2 在multimap和multiset 中查找元素 323 10.6 容器的综合应用:文本查询程序 325 10.6.1 查询程序的设计 326 10.6.2 TextQuery类 327 10.6.3 TextQuery类的使用 328 10.6.4 编写成员函数 330 小结 332 术语 332 第11章 泛型算法 335 11.1 概述 336 11.2 初窥算法 339 11.2.1 只读算法 339 11.2.2 写容器元素的算法 341 11.2.3 对容器元素重新排序的算法 343 11.3 再谈迭代器 347 11.3.1 插入迭代器 348 11.3.2 iostream迭代器 349 11.3.3 反向迭代器 353 11.3.4 const迭代器 355 11.3.5 五种迭代器 356 11.4 泛型算法的结构 358 11.4.1 算法的形参模式 359 11.4.2 算法的命名规范 359 11.5 容器特有的算法 361 小结 362 术语 363 第三部分 类和数据抽象 第12章 类 367 12.1 类的定义和声明 368 12.1.1 类定义:扼要重述 368 12.1.2 数据抽象和封装 369 12.1.3 关于类定义的更多内容 372 12.1.4 类声明与类定义 374 12.1.5 类对象 375 12.2 隐含的this指针 376 12.3 类作用域 380 类作用域中的名字查找 382 12.4 构造函数 385 12.4.1 构造函数初始化式 387 12.4.2 默认实参与构造函数 391 12.4.3 默认构造函数 392 12.4.4 隐式类类型转换 393 12.4.5 类成员的显式初始化 396 12.5 友元 396 12.6 static类成员 398 12.6.1 static成员函数 400 12.6.2 static数据成员 400 小结 403 术语 403 第13章 复制控制 405 13.1 复制构造函数 406 13.1.1 合成的复制构造函数 409 13.1.2 定义自己的复制构造函数 409 13.1.3 禁止复制 410 13.2 赋值操作符 411 13.3 析构函数 412 13.4 消息处理示例 415 13.5 管理指针成员 419 13.5.1 定义智能指针类 421 13.5.2 定义值型类 425 小结 427 术语 427 第14章 重载操作符与转换 429 14.1 重载操作符的定义 430 14.2 输入和输出操作符 435 14.2.1 输出操作符<>的重载 437 14.3 算术操作符和关系操作符 439 14.3.1 相等操作符 440 14.3.2 关系操作符 441 14.4 赋值操作符 441 14.5 下标操作符 442 14.6 成员访问操作符 443 14.7 自增操作符和自减操作符 446 14.8 调用操作符和函数对象 449 14.8.1 将函数对象用于标准库算法 450 14.8.2 标准库定义的函数对象 451 14.8.3 函数对象的函数适配器 453 14.9 转换与类类型 454 14.9.1 转换为什么有用 454 14.9.2 转换操作符 455 14.9.3 实参匹配和转换 458 14.9.4 重载确定和类的实参 461 14.9.5 重载、转换和操作符 464 小结 466 术语 467 第四部分 面向对象编程与泛型编程 第15章 面向对象编程 471 15.1 面向对象编程:概述 472 15.2 定义基类和派生类 473 15.2.1 定义基类 474 15.2.2 protected成员 475 15.2.3 派生类 476 15.2.4 virtual与其他成员函数 479 15.2.5 公用、私有和受保护的继承 482 15.2.6 友元关系与继承 486 15.2.7 继承与静态成员 486 15.3 转换与继承 487 15.3.1 派生类到基类的转换 487 15.3.2 基类到派生类的转换 489 15.4 构造函数和复制控制 490 15.4.1 基类构造函数和复制控制 490 15.4.2 派生类构造函数 490 15.4.3 复制控制和继承 494 15.4.4 虚析构函数 495 15.4.5 构造函数和析构函数中的虚函数 497 15.5 继承情况下的类作用域 497 15.5.1 名字查找在编译时发生 498 15.5.2 名字冲突与继承 498 15.5.3 作用域与成员函数 499 15.5.4 虚函数与作用域 500 15.6 纯虚函数 502 15.7 容器与继承 503 15.8 句柄类与继承 504 15.8.1 指针型句柄 505 15.8.2 复制未知类型 507 15.8.3 句柄的使用 508 15.9 再谈文本查询示例 511 15.9.1 面向对象的解决方案 513 15.9.2 值型句柄 514 15.9.3 Query_base类 515 15.9.4 Query句柄类 516 15.9.5 派生类 518 15.9.6 eval函数 520 小结 522 术语 523 第16章 模板与泛型编程 525 16.1 模板定义 526 16.1.1 定义函数模板 526 16.1.2 定义类模板 528 16.1.3 模板形参 529 16.1.4 模板类型形参 531 16.1.5 非类型模板形参 533 16.1.6 编写泛型程序 534 16.2 实例化 535 16.2.1 模板实参推断 537 16.2.2 函数模板的显式实参 540 16.3 模板编译模型 542 16.4 类模板成员 545 16.4.1 类模板成员函数 548 16.4.2 非类型形参模板实参 551 16.4.3 类模板中的友元声明 552 16.4.4 Queue和QueueItem的友元 声明 554 16.4.5 成员模板 556 16.4.6 完整的Queue类 558 16.4.7 类模板的static成员 559 16.5 一个泛型句柄类 560 16.5.1 定义句柄类 561 16.5.2 使用句柄 562 16.6 模板特化 564 16.6.1 函数模板的特化 565 16.6.2 类模板的特化 567 16.6.3 特化成员而不特化类 569 16.6.4 类模板的部分特化 570 16.7 重载与函数模板 570 小结 573 术语 574 第五部分 高级主题 第17章 用于大型程序的工具 579 17.1 异常处理 580 17.1.1 抛出类类型的异常 581 17.1.2 栈展开 582 17.1.3 捕获异常 583 17.1.4 重新抛出 585 17.1.5 捕获所有异常的处理代码 586 17.1.6 函数测试块与构造函数 586 17.1.7 异常类层次 587 17.1.8 自动资源释放 589 17.1.9 auto_ptr类 591 17.1.10 异常说明 595 17.1.11 函数指针的异常说明 598 17.2 命名空间 599 17.2.1 命名空间的定义 599 17.2.2 嵌套命名空间 603 17.2.3 未命名的命名空间 604 17.2.4 命名空间成员的使用 606 17.2.5 类、命名空间和作用域 609 17.2.6 重载与命名空间 612 17.2.7 命名空间与模板 614 17.3 多重继承与虚继承 614 17.3.1 多重继承 615 17.3.2 转换与多个基类 617 17.3.3 多重继承派生类的复制控制 619 17.3.4 多重继承下的类作用域 620 17.3.5 虚继承 622 17.3.6 虚基类的声明 624 17.3.7 特殊的初始化语义 625 小结 628 术语 628 第18章 特殊工具与技术 631 18.1 优化内存分配 632 18.1.1 C++中的内存分配 632 18.1.2 allocator类 633 18.1.3 operator new函数和 operator delete函数 636 18.1.4 定位new表达式 638 18.1.5 显式析构函数的调用 639 18.1.6 类特定的new和delete 639 18.1.7 一个内存分配器基类 641 18.2 运行时类型识别 646 18.2.1 dynamic_cast操作符 647 18.2.2 typeid操作符 649 18.2.3 RTTI的使用 650 18.2.4 type_info类 652 18.3 类成员的指针 653 18.3.1 声明成员指针 653 18.3.2 使用类成员的指针 655 18.4 嵌套类 658 18.4.1 嵌套类的实现 658 18.4.2 嵌套类作用域中的名字查找 661 18.5 联合:节省空间的类 662 18.6 局部类 665 18.7 固有的不可移植的特征 666 18.7.1 位域 666 18.7.2 volatile限定符 668 18.7.3 链接指示:extern "C" 669 小结 672 术语 673 附录 标准库 675 索引 703
C++ Primer中文版(第5版)[203M]分3个压缩包 本书是久负盛名的C++经典教程,其内容是C++大师Stanley B. Lippman丰富的实践经验和C++标准委员会原负责人Josée Lajoie对C++标准深入理解的完美结合,已经帮助全球无数程序员学会了C++。 对C++基本概念和技术全面而且权威的阐述,对现代C++编程风格的强调,使本书成为C++初学者的最佳指南;对于中高级程序员,本书也是不可或缺的参考书。 目录 第1章 开始 1   1.1 编写一个简单的C++程序 2   1.1.1 编译、运行程序 3   1.2 初识输入输出 5   1.3 注释简介 8   1.4 控制流 10   1.4.1 while语句 10   1.4.2 for语句 11   1.4.3 读取数量不定的输入数据 13   1.4.4 if语句 15   1.5 类简介 17   1.5.1 Sales_item类 17   1.5.2 初识成员函数 20   1.6 书店程序 21   小结 23   术语表 23   第Ⅰ部分 C++基础 27   第2章 变量和基本类型 29   2.1 基本内置类型 30   2.1.1 算术类型 30   2.1.2 类型转换 32   2.1.3 字面值常量 35   2.2 变量 38   2.2.1 变量定义 38   2.2.2 变量声明和定义的关系 41   2.2.3 标识符 42   2.2.4 名字的作用域 43   2.3 复合类型 45   2.3.1 引用 45   2.3.2 指针 47   2.3.3 理解复合类型的声明 51   2.4 const限定符 53   2.4.1 const的引用 54   2.4.2 指针和const 56   2.4.3 顶层const 57   2.4.4 constexpr和常量表达式 58   2.5 处理类型 60   2.5.1 类型别名 60   2.5.2 auto类型说明符 61   2.5.3 decltype类型指示符 62   2.6 自定义数据结构 64   2.6.1 定义Sales_data类型 64   2.6.2 使用Sales_data类 66   2.6.3 编写自己的头文件 67   小结 69   术语表 69   第3章 字符串、向量和数组 73   3.1 命名空间的using声明 74   3.2 标准库类型string 75   3.2.1 定义和初始化string对象 76   3.2.2 string对象上的操作 77   3.2.3 处理string对象中的字符 81   3.3 标准库类型vector 86   3.3.1 定义和初始化vector对象 87   3.3.2 向vector对象中添加元素 90   3.3.3 其他vector操作 91   3.4 迭代器介绍 95   3.4.1 使用迭代器 95   3.4.2 迭代器运算 99   3.5 数组 101   3.5.1 定义和初始化内置数组 101   3.5.2 访问数组元素 103   3.5.3 指针和数组 105   3.5.4 C风格字符串 109   3.5.5 与旧代码的接口 111   3.6 多维数组 112   小结 117   术语表 117   第4章 表达式 119   4.1 基础 120   4.1.1 基本概念 120   4.1.2 优先级与结合律 121   4.1.3 求值顺序 123   4.2 算术运算符 124   4.3 逻辑和关系运算符 126   4.4 赋值运算符 129   4.5 递增和递减运算符 131   4.6 成员访问运算符 133   4.7 条件运算符 134   4.8 位运算符 135   4.9 sizeof运算符 139   4.10 逗号运算符 140   4.11 类型转换 141   4.11.1 算术转换 142   4.11.2 其他隐式类型转换 143   4.11.3 显式转换 144   4.12 运算符优先级表 147   小结 149   术语表 149   第5章 语句 153   5.1 简单语句 154   5.2 语句作用域 155   5.3 条件语句 156   5.3.1 if语句 156   5.3.2 switch语句 159   5.4 迭代语句 165   5.4.1 while语句 165   5.4.2 传统的for语句 166   5.4.3 范围for语句 168   5.4.4 do while语句 169   5.5 跳转语句 170   5.5.1 break
C++ Primer中文版(第5版)[203M]分3个压缩包 本书是久负盛名的C++经典教程,其内容是C++大师Stanley B. Lippman丰富的实践经验和C++标准委员会原负责人Josée Lajoie对C++标准深入理解的完美结合,已经帮助全球无数程序员学会了C++。 对C++基本概念和技术全面而且权威的阐述,对现代C++编程风格的强调,使本书成为C++初学者的最佳指南;对于中高级程序员,本书也是不可或缺的参考书。 目录 第1章 开始 1   1.1 编写一个简单的C++程序 2   1.1.1 编译、运行程序 3   1.2 初识输入输出 5   1.3 注释简介 8   1.4 控制流 10   1.4.1 while语句 10   1.4.2 for语句 11   1.4.3 读取数量不定的输入数据 13   1.4.4 if语句 15   1.5 类简介 17   1.5.1 Sales_item类 17   1.5.2 初识成员函数 20   1.6 书店程序 21   小结 23   术语表 23   第Ⅰ部分 C++基础 27   第2章 变量和基本类型 29   2.1 基本内置类型 30   2.1.1 算术类型 30   2.1.2 类型转换 32   2.1.3 字面值常量 35   2.2 变量 38   2.2.1 变量定义 38   2.2.2 变量声明和定义的关系 41   2.2.3 标识符 42   2.2.4 名字的作用域 43   2.3 复合类型 45   2.3.1 引用 45   2.3.2 指针 47   2.3.3 理解复合类型的声明 51   2.4 const限定符 53   2.4.1 const的引用 54   2.4.2 指针和const 56   2.4.3 顶层const 57   2.4.4 constexpr和常量表达式 58   2.5 处理类型 60   2.5.1 类型别名 60   2.5.2 auto类型说明符 61   2.5.3 decltype类型指示符 62   2.6 自定义数据结构 64   2.6.1 定义Sales_data类型 64   2.6.2 使用Sales_data类 66   2.6.3 编写自己的头文件 67   小结 69   术语表 69   第3章 字符串、向量和数组 73   3.1 命名空间的using声明 74   3.2 标准库类型string 75   3.2.1 定义和初始化string对象 76   3.2.2 string对象上的操作 77   3.2.3 处理string对象中的字符 81   3.3 标准库类型vector 86   3.3.1 定义和初始化vector对象 87   3.3.2 向vector对象中添加元素 90   3.3.3 其他vector操作 91   3.4 迭代器介绍 95   3.4.1 使用迭代器 95   3.4.2 迭代器运算 99   3.5 数组 101   3.5.1 定义和初始化内置数组 101   3.5.2 访问数组元素 103   3.5.3 指针和数组 105   3.5.4 C风格字符串 109   3.5.5 与旧代码的接口 111   3.6 多维数组 112   小结 117   术语表 117   第4章 表达式 119   4.1 基础 120   4.1.1 基本概念 120   4.1.2 优先级与结合律 121   4.1.3 求值顺序 123   4.2 算术运算符 124   4.3 逻辑和关系运算符 126   4.4 赋值运算符 129   4.5 递增和递减运算符 131   4.6 成员访问运算符 133   4.7 条件运算符 134   4.8 位运算符 135   4.9 sizeof运算符 139   4.10 逗号运算符 140   4.11 类型转换 141   4.11.1 算术转换 142   4.11.2 其他隐式类型转换 143   4.11.3 显式转换 144   4.12 运算符优先级表 147   小结 149   术语表 149   第5章 语句 153   5.1 简单语句 154   5.2 语句作用域 155   5.3 条件语句 156   5.3.1 if语句 156   5.3.2 switch语句 159   5.4 迭代语句 165   5.4.1 while语句 165   5.4.2 传统的for语句 166   5.4.3 范围for语句 168   5.4.4 do while语句 169   5.5 跳转语句 170   5.5.1 break语句 170   5.5.2 continue语句 171   5.5.3 goto语句 172   5.6 TRY语句块和异常处理 172   5.6.1 throw表达式 173   5.6.2 try语句块 174   5.6.3 标准异常 176   小结 178   术语表 178   第6章 函数 181   6.1 函数基础 182   6.1.1 局部对象 184   6.1.2 函数声明 186   6.1.3 分离式编译 186   6.2 参数传递 187   6.2.1 传值参数 187   6.2.2 传引用参数 188   6.2.3 const形参和实参 190   6.2.4 数组形参 193   6.2.5 main:处理命令行选项 196   6.2.6 含有可变形参的函数 197   6.3 返回类型和return语句 199   6.3.1 无返回值函数 200   6.3.2 有返回值函数 200   6.3.3 返回数组指针 205   6.4 函数重载 206   6.4.1 重载与作用域 210   6.5 特殊用途语言特性 211   6.5.1 默认实参 211   6.5.2 内联函数和constexpr函数 213   6.5.3 调试帮助 215   6.6 函数匹配 217   6.6.1 实参类型转换 219   6.7 函数指针 221   小结 225   术语表 225   第7章 类 227   7.1 定义抽象数据类型 228   7.1.1 设计Sales_data类 228   7.1.2 定义改进的Sales_data类 230   7.1.3 定义类相关的非成员函数 234   7.1.4 构造函数 235   7.1.5 拷贝、赋值和析构 239   7.2 访问控制与封装 240   7.2.1 友元 241   7.3 类的其他特性 243   7.3.1 类成员再探 243   7.3.2 返回*this的成员函数 246   7.3.3 类类型 249   7.3.4 友元再探 250   7.4 类的作用域 253   7.4.1 名字查找与类的作用域 254   7.5 构造函数再探 257   7.5.1 构造函数初始值列表 258   7.5.2 委托构造函数 261   7.5.3 默认构造函数的作用 262   7.5.4 隐式的类类型转换 263   7.5.5 聚合类 266   7.5.6 字面值常量类 267   7.6 类的静态成员 268   小结 273   术语表 273   第Ⅱ部 C++标准库 275   第8章 IO库 277   8.1 IO类 278   8.1.1 IO对象无拷贝或赋值 279   8.1.2 条件状态 279   8.1.3 管理输出缓冲 281   8.2 文件输入输出 283   8.2.1 使用文件流对象 284   8.2.2 文件模式 286   8.3 string流 287   8.3.1 使用istringstream 287   8.3.2 使用ostringstream 289   小结 290   术语表 290   第9章 顺序容器 291   9.1 顺序容器概述 292   9.2 容器库概览 294   9.2.1 迭代器 296   9.2.2 容器类型成员 297   9.2.3 begin和end成员 298   9.2.4 容器定义和初始化 299   9.2.5 赋值和swap 302   9.2.6 容器大小操作 304   9.2.7 关系运算符 304   9.3 顺序容器操作 305   9.3.1 向顺序容器添加元素 305   9.3.2 访问元素 309   9.3.3 删除元素 311   9.3.4 特殊的forward_list操作 312   9.3.5 改变容器大小 314   9.3.6 容器操作可能使迭代器失效 315   9.4 vector对象是如何增长的 317   9.5 额外的string操作 320   9.5.1 构造string的其他方法 321   9.5.2 改变string的其他方法 322   9.5.3 string搜索操作 325   9.5.4 compare函数 327   9.5.5 数值转换 327   9.6 容器适配器 329   小结 332   术语表 332   第10章 泛型算法 335   10.1 概述 336   10.2 初识泛型算法 338   10.2.1 只读算法 338   10.2.2 写容器元素的算法 339   10.2.3 重排容器元素的算法 342   10.3 定制操作 344   10.3.1 向算法传递函数 344   10.3.2 lambda表达式 345   10.3.3 lambda捕获和返回 349   10.3.4 参数绑定 354   10.4 再探迭代器 357   10.4.1 插入迭代器 358   10.4.2 iostream迭代器 359   10.4.3 反向迭代器 363   10.5 泛型算法结构 365   10.5.1 5类迭代器 365   10.5.2 算法形参模式 367   10.5.3 算法命名规范 368   10.6 特定容器算法 369   小结 371   术语表 371   第11章 关联容器 373   11.1 使用关联容器 374   11.2 关联容器概述 376   11.2.1 定义关联容器 376   11.2.2 关键字类型的要求 378   11.2.3 pair类型 379   11.3 关联容器操作 381   11.3.1 关联容器迭代器 382   11.3.2 添加元素 383   11.3.3 删除元素 386   11.3.4 map的下标操作 387   11.3.5 访问元素 388   11.3.6 一个单词转换的map 391   11.4 无序容器 394   小结 397   术语表 397   第12章 动态内存 399   12.1 动态内存与智能指针 400   12.1.1 shared_ptr类 400   12.1.2 直接管理内存 407   12.1.3 shared_ptr和new结合使用 412   12.1.4 智能指针和异常 415   12.1.5 unique_ptr 417   12.1.6 weak_ptr 420   12.2 动态数组 423   12.2.1 new和数组 423   12.2.2 allocator类 427   12.3 使用标准库:文本查询程序 430   12.3.1 文本查询程序设计 430   12.3.2 文本查询程序类的定义 432   小结 436   术语表 436   第Ⅲ部分 类设计者的工具 437   第13章 拷贝控制 439   13.1 拷贝、赋值与销毁 440   13.1.1 拷贝构造函数 440   13.1.2 拷贝赋值运算符 443   13.1.3 析构函数 444   13.1.4 三/五法则 447   13.1.5 使用=default 449   13.1.6 阻止拷贝 449   13.2 拷贝控制和资源管理 452   13.2.1 行为像值的类 453   13.2.2 定义行为像指针的类 455   13.3 交换操作 457   13.4 拷贝控制示例 460   13.5 动态内存管理类 464   13.6 对象移动 470   13.6.1 右值引用 471   13.6.2 移动构造函数和移动赋值运算符 473   13.6.3 右值引用和成员函数 481   小结 486   术语表 486   第14章 操作重载与类型转换 489   14.1 基本概念 490   14.2 输入和输出运算符 494   14.2.1 重载输出运算符<> 495   14.3 算术和关系运算符 497   14.3.1 相等运算符 497   14.3.2 关系运算符 498   14.4 赋值运算符 499   14.5 下标运算符 501   14.6 递增和递减运算符 502   14.7 成员访问运算符 504   14.8 函数调用运算符 506   14.8.1 lambda是函数对象 507   14.8.2 标准库定义的函数对象 509   14.8.3 可调用对象与function 511   14.9 重载、类型转换与运算符 514   14.9.1 类型转换运算符 514   14.9.2 避免有二义性的类型转换 517   14.9.3 函数匹配与重载运算符 521   小结 523   术语表 523   第15章 面向对象程序设计 525   15.1 OOP:概述 526   15.2 定义基类和派生类 527   15.2.1 定义基类 528   15.2.2 定义派生类 529   15.2.3 类型转换与继承 534   15.3 虚函数 536   15.4 抽象基类 540   15.5 访问控制与继承 542   15.6 继承中的类作用域 547   15.7 构造函数与拷贝控制 551   15.7.1 虚析构函数 552   15.7.2 合成拷贝控制与继承 552   15.7.3 派生类的拷贝控制成员 554   15.7.4 继承的构造函数 557   15.8 容器与继承 558   15.8.1 编写Basket类 559   15.9 文本查询程序再探 562   15.9.1 面向对象的解决方案 563   15.9.2 Query_base类和Query类 567   15.9.3 派生类 568   15.9.4 eval函数 571   小结 575   术语表 575   第16章 模板与泛型编程 577   16.1 定义模板 578   16.1.1 函数模板 578   16.1.2 类模板 583   16.1.3 模板参数 592   16.1.4 成员模板 595   16.1.5 控制实例化 597   16.1.6 效率与灵活性 599   16.2 模板实参推断 600   16.2.1 类型转换与模板类型参数 601   16.2.2 函数模板显式实参 603   16.2.3 尾置返回类型与类型转换 604   16.2.4 函数指针和实参推断 607   16.2.5 模板实参推断和引用 608   16.2.6 理解std::move 610   16.2.7 转发 612   16.3 重载与模板 614   16.4 可变参数模板 618   16.4.1 编写可变参数函数模板 620   16.4.2 包扩展 621   16.4.3 转发参数包 622   16.5 模板特例化 624   小结 630   术语表 630   第Ⅳ部分 高级主题 633   第17章 标准库特殊设施 635   17.1 tuple类型 636   17.1.1 定义和初始化tuple 637   17.1.2 使用tuple返回多个值 638   17.2 BITSET类型 640   17.2.1 定义和初始化bitset 641   17.2.2 bitset操作 643   17.3 正则表达式 645   17.3.1 使用正则表达式库 646   17.3.2 匹配与Regex迭代器类型 650   17.3.3 使用子表达式 653   17.3.4 使用regex_replace 657   17.4 随机数 659   17.4.2 其他随机数分布 663   bernoulli_distribution类 665   17.5 IO库再探 666   17.5.1 格式化输入与输出 666   17.5.2 未格式化的输入/输出操作 673   17.5.3 流随机访问 676   小结 680   术语表 680   第18章 用于大型程序的工具 683   18.1 异常处理 684   18.1.1 抛出异常 684   18.1.2 捕获异常 687   18.1.3 函数try语句块与构造函数 689   18.1.4 noexcept异常说明 690   18.1.5 异常类层次 693   18.2 命名空间 695   18.2.1 命名空间定义 695   18.2.2 使用命名空间成员 701   18.2.3 类、命名空间与作用域 705   18.2.4 重载与命名空间 708   18.3 多重继承与虚继承 710   18.3.1 多重继承 711   18.3.2 类型转换与多个基类 713   18.3.3 多重继承下的类作用域 715   18.3.4 虚继承 717   18.3.5 构造函数与虚继承 720   小结 722   术语表 722   第19章 特殊工具与技术 725   19.1 控制内存分配 726   19.1.1 重载new和delete 726   19.1.2 定位new表达式 729   19.2 运行时类型识别 730   19.2.1 dynamic_cast运算符 730   19.2.2 typeid运算符 732   19.2.3 使用RTTI 733   19.2.4 type_info类 735   19.3 枚举类型 736   19.4 类成员指针 739   19.4.1 数据成员指针 740   19.4.2 成员函数指针 741   19.4.3 将成员函数用作可调用对象 744   19.5 嵌套类 746   19.6 union:一种节省空间的类 749   19.7 局部类 754   19.8 固有的不可移植的特性 755   19.8.1 位域 756   19.8.2 volatile限定符 757   19.8.3 链接指示:extern "C" 758   小结 762   术语表 762   附录A 标准库 765   A.1 标准库名字和头文件 766   A.2 算法概览 770   A.2.1 查找对象的算法 771   A.2.2 其他只读算法 772   A.2.3 二分搜索算法 772   A.2.4 写容器元素的算法 773   A.2.5 划分与排序算法 775   A.2.6 通用重排操作 776   A.2.7 排列算法 778   A.2.8 有序序列的集合算法 778   A.2.9 最小值和最大值 779   A.2.10 数值算法 780   A.3 随机数 781   A.3.1 随机数分布 781   A.3.2 随机数引擎 783   C++11的新特性   2.1.1 long long类型 31   2.2.1 列表初始化 39   2.3.2 nullptr常量 48   2.4.4 constexpr变量 59   2.5.1 类型别名声明 60   2.5.2 auto类型指示符 61   2.5.3 decltype类型指示符 62   2.6.1 类内初始化 65   3.2.2 使用auto或decltype缩写类型 79   3.2.3 范围for语句 82   3.3 定义vector对象的vector(向量的向量) 87   3.3.1 vector对象的列表初始化 88   3.4.1 容器的cbegin和cend函数 98   3.5.3 标准库begin和end函数 106   3.6 使用auto和decltype简化声明 115   4.2 除法的舍入规则 125   4.4 用大括号包围的值列表赋值 129   4.9 将sizeof用于类成员 139   5.4.3 范围for语句 168   6.2.6 标准库initializer_list类 197   6.3.2 列表初始化返回值 203   6.3.3 定义尾置返回类型 206   6.3.3 使用decltype简化返回类型定义   6.5.2 constexpr函数 214   7.1.4 使用=default生成默认构造函数 237   7.3.1 类对象成员的类内初始化 246   7.5.2 委托构造函数 261   7.5.6 constexpr构造函数 268   8.2.1 用string对象处理文件名 284   9.1 array和forward_list容器 293   9.2.3 容器的cbegin和cend函数 298   9.2.4 容器的列表初始化 300   9.2.5 容器的非成员函数swap 303   9.3.1 容器insert成员的返回类型 308   9.3.1 容器的emplace成员的返回类型 308   9.4 shrink_to_fit 318   9.5.5 string的数值转换函数 327   10.3.2 Lambda表达式 346   10.3.3 Lambda表达式中的尾置返回类型 353   10.3.4 标准库bind函数 354   11.2.1 关联容器的列表初始化 377   11.2.3 列表初始化pair的返回类型 380   11.3.2 pair的列表初始化 384   11.4 无序容器 394   12.1 智能指针 400   12.1.1 shared_ptr类   12.1.2 动态分配对象的列表初始化 407   12.1.2 auto和动态分配 408   12.1.5 unique_ptr类 417   12.1.6 weak_ptr类 420   12.2.1 范围for语句不能应用于动态分配数组 424   12.2.1 动态分配数组的列表初始化 424   12.2.1 auto不能用于分配数组 424   12.2.2 allocator::construct可使用任意构造函数 428   13.1.5 将=default用于拷贝控制成员 449   13.1.6 使用=default阻止拷贝类对象 449   13.5 用移动类对象代替拷贝类对象 469   13.6.1 右值引用 471   13.6.1 标准库move函数 472   13.6.2 移动构造函数和移动赋值 473   13.6.2 移动构造函数通常应该是noexcept 473   13.6.2 移动迭代器 480   13.6.3 引用限定成员函数 483   14.8.3 function类模板 512   14.9.1 explicit类型转换运算符 516   15.2.2 虚函数的override指示符 530   15.2.2 通过定义类为final来阻止继承 533   15.3 虚函数的override和final指示符 538   15.7.2 删除的拷贝控制和继承 553   15.7.4 继承的构造函数 557   16.1.2 声明模板类型形参为友元 590   16.1.2 模板类型别名 590   16.1.3 模板函数的默认模板参数 594   16.1.5 实例化的显式控制 597   16.2.3 模板函数与尾置返回类型 605   16.2.5 引用折叠规则 609   16.2.6 用static_cast将左值转换为右值 612   16.2.7 标准库forward函数 614   16.4 可变参数模板 618   16.4 sizeof...运算符 619   16.4.3 可变参数模板与转发 622   17.1 标准库Tuple类模板 636   17.2.2 新的bitset运算 643   17.3 正则表达式库 645   17.4 随机数库 659   17.5.1 浮点数格式控制 670   18.1.4 noexcept异常指示符 690   18.1.4 noexcept运算符 691   18.2.1 内联名字空间 699   18.3.1 继承的构造函数和多重继承 712   19.3 有作用域的enum 736   19.3 说明类型用于保存enum对象 738   19.3 enum的提前声明 738   19.4.3 标准库mem_fn类模板 746   19.6 类类型的联合成员 75
visualC++2010入门经典源代码 第1章 使用visual c++ 2010编程 1.1 .net framework 1 1.2 clr 2 1.3 编写c++应用程序 3 1.4 学习windows编程 4 1.4.1 学习c++ 4 1.4.2 c++标准 5 1.4.3 属性 5 1.4.4 控制台应用程序 5 1.4.5 windows编程概念 6 1.5 集成开发环境简介 7 1.5.1 编辑器 8 1.5.2 编译器 8 1.5.3 链接器 8 1.5.4 库 8 1.6 使用ide 8 1.6.1 工具栏选项 9 1.6.2 可停靠的工具栏 10 1.6.3 文档 11 1.6.4 项目和解决方案 11 1.6.5 设置visual c++ 2010的选项 23 1.6.6 创建和执行windows应用程序 23 1.6.7 创建windows forms应用程序 26 1.7 小结 27 1.8 本章主要内容 28 第2章 数据、变量和计算 29 2.1 c++程序结构 29 2.1.1 main()函数 36 2.1.2 程序语句 36 2.1.3 空白 38 2.1.4 语句块 38 2.1.5 自动生成的控制台程序 39 2.2 定义变量 40 2.2.1 命名变量 40 2.2.2 声明变量 41 2.2.3 变量的初始值 42 2.3 基本数据类型 42 2.3.1 整型变量 43 2.3.2 字符数据类型 44 2.3.3 整型修饰符 45 2.3.4 布尔类型 46 2.3.5 浮点类型 46 2.3.6 字面值 47 2.3.7 定义数据类型的同义词 48 2.3.8 具有特定值集的变量 49 2.4 基本的输入/输出操作 50 2.4.1 从键盘输入 50 2.4.2 到命令行的输出 50 2.4.3 格式化输出 51 2.4.4 转义序列 52 2.5 c++中的计算 54 2.5.1 赋值语句 54 2.5.2 算术运算 55 2.5.3 计算余数 59 2.5.4 修改变量 60 2.5.5 增量和减量运算符 60 2.5.6 计算的顺序 63 2.6 类型转换和类型强制转换 64 2.6.1 赋值语句中的类型转换 65 2.6.2 显式类型转换 65 2.6.3 老式的类型强制转换 66 2.7 auto关键字 66 2.8 查看类型 67 2.9 按位运算符 67 2.9.1 按位and运算符 68 2.9.2 按位or运算符 69 2.9.3 按位eor运算符 71 2.9.4 按位not运算符 71 2.9.5 移位运算符 71 2.10 lvalue和rvalue 73 2.11 了解存储时间和作用域 74 2.11.1 自动变量 74 2.11.2 决定变量声明的位置 76 2.11.3 全局变量 77 2.11.4 静态变量 80 2.12 名称空间 80 2.12.1 声明名称空间 81 2.12.2 多个名称空间 82 2.13 c++/cli编程 84 2.13.1 c++/cli特有的基本数据类型 84 2.13.2 命令行上的c++/cli输出 87 2.13.3 c++/cli特有的功能—— 格式化输出 88 2.13.4 c++/cli的键盘输入 91 2.13.5 使用safe_cast 92 2.13.6 c++/cli枚举 92 2.14 查看c++/cli类型 96 2.15 小结 97 2.16 练习 97 2.17 本章主要内容 98 第3章 判断和循环 101 3.1 比较数据值 101 3.1.1 if语句 102 3.1.2 嵌套的if语句 104 3.1.3 嵌套的if-else语句 107 3.1.4 逻辑运算符和表达式 109 3.1.5 条件运算符 112 3.1.6 switch语句 113 3.1.7 无条件转移 116 3.2 重复执行语句块 117 3.2.1 循环的概念 117 3.2.2 for循环的变体 119 3.2.3 while循环 126 3.2.4 do-while循环 128 3.2.5 嵌套的循环 129 3.3 c++/cli编程 132 3.4 小结 137 3.5 练习 138 3.6 本章主要内容 138 第4章 数组、字符串和指针 139 4.1 处理多个相同类型的数据值 139 4.1.1 数组 140 4.1.2 声明数组 140 4.1.3 初始化数组 143 4.1.4 字符数组和字符串处理 144 4.1.5 多维数组 147 4.2 间接数据访问 150 4.2.1 指针的概念 150 4.2.2 声明指针 150 4.2.3 使用指针 152 4.2.4 初始化指针 152 4.2.5 sizeof操作符 158 4.2.6 常量指针和指向常量的指针 159 4.2.7 指针和数组 161 4.3 动态内存分配 168 4.3.1 堆的别名—— 空闲存储器 168 4.3.2 new和delete操作符 168 4.3.3 为数组动态分配内存 169 4.3.4 多维数组的动态分配 171 4.4 使用引用 172 4.4.1 引用的概念 172 4.4.2 声明并初始化lvalue引用 172 4.4.3 声明并初始化rvalue引用 173 4.5 字符串的本地c++库函数 174 4.5.1 查找以空字符结尾的字符串的长度 174 4.5.2 连接以空字符结尾的字符串 174 4.5.3 复制以空字符结尾的字符串 176 4.5.4 比较以空字符结尾的字符串 177 4.5.5 搜索以空字符结尾的字符串 177 4.6 c++/cli编程 179 4.6.1 跟踪句柄 180 4.6.2 clr数组 181 4.6.3 字符串 195 4.6.4 跟踪引用 203 4.6.5 内部指针 204 4.7 小结 206 4.8 练习 206 4.9 本章主要内容 207 第5章 程序结构(1) 209 5.1 理解函数 209 5.1.1 需要函数的原因 210 5.1.2 函数的结构 210 5.1.3 使用函数 213 5.2 给函数传递实参 216 5.2.1 按值传递机制 216 5.2.2 给函数传递指针实参 217 5.2.3 给函数传递数组 219 5.2.4 给函数传递引用实参 222 5.2.5 使用const修饰符 224 5.2.6 rvalue引用形参 225 5.2.7 main()函数的实参 227 5.2.8 接受数量不定的函数实参 229 5.3 从函数返回值 231 5.3.1 返回指针 231 5.3.2 返回引用 233 5.3.3 函数中的静态变量 236 5.4 递归函数调用 238 5.5 c++/cli编程 240 5.5.1 接受数量可变实参的函数 241 5.5.2 main( )的实参 242 5.6 小结 243 5.7 练习 243 5.8 本章主要内容 244 第6章 程序结构(2) 245 6.1 函数指针 245 6.1.1 声明函数指针 246 6.1.2 函数指针作为实参 249 6.1.3 函数指针的数组 250 6.2 初始化函数形参 250 6.3 异常 252 6.3.1 抛出异常 253 6.3.2 捕获异常 254 6.3.3 mfc中的异常处理 255 6.4 处理内存分配错误 256 6.5 函数重载 257 6.5.1 函数重载的概念 258 6.5.2 引用类型和重载选择 260 6.5.3 何时重载函数 260 6.6 函数模板 261 6.7 使用decltype操作符 263 6.8 使用函数的示例 265 6.8.1 实现计算器 265 6.8.2 从字符串中删除空格 268 6.8.3 计算表达式的值 268 6.8.4 获得项值 270 6.8.5 分析数 271 6.8.6 整合程序 274 6.8.7 扩展程序 275 6.8.8 提取子字符串 277 6.8.9 运行修改过的程序 279 6.9 c++/cli编程 279 6.9.1 理解泛型函数 280 6.9.2 clr版本的计算器程序 285 6.10 小结 290 6.11 练习 291 6.12 本章主要内容 292 第7章 自定义数据类型 293 7.1 c++中的结构 293 7.1.1 结构的概念 294 7.1.2 定义结构 294 7.1.3 初始化结构 294 7.1.4 访问结构的成员 295 7.1.5 伴随结构的智能感知帮助 298 7.1.6 rect结构 299 7.1.7 使用指针处理结构 300 7.2 数据类型、对象、类和实例 301 7.2.1 类的起源 303 7.2.2 类的操作 303 7.2.3 术语 303 7.3 理解类 304 7.3.1 定义类 304 7.3.2 声明类的对象 305 7.3.3 访问类的数据成员 305 7.3.4 类的成员函数 307 7.3.5 成员函数定义的位置 309 7.3.6 内联函数 309 7.4 类构造函数 310 7.4.1 构造函数的概念 311 7.4.2 默认的构造函数 312 7.4.3 在类定义中指定默认的形参值 314 7.4.4 在构造函数中使用初始化列表 316 7.4.5 声明显式的构造函数 317 7.5 类的私有成员 318 7.5.1 访问私有类成员 320 7.5.2 类的友元函数 321 7.5.3 默认复制构造函数 323 7.6 this指针 325 7.7 类的const对象 327 7.7.1 类的const成员函数 327 7.7.2 类外部的成员函数定义 328 7.8 类对象的数组 329 7.9 类的静态成员 331 7.9.1 类的静态数据成员 331 7.9.2 类的静态函数成员 334 7.10 类对象的指针和引用 334 7.10.1 类对象的指针 334 7.10.2 类对象的引用 337 7.11 c++/cli编程 338 7.11.1 定义值类类型 339 7.11.2 定义引用类类型 344 7.11.3 定义引用类类型的复制构造函数 346 7.11.4 类属性 346 7.11.5 initonly字段 358 7.11.6 静态构造函数 360 7.12 小结 360 7.13 练习 360 7.14 本章主要内容 361 第8章 深入理解类 363 8.1 类析构函数 363 8.1.1 析构函数的概念 363 8.1.2 默认的析构函数 364 8.1.3 析构函数与动态内存分配 366 8.2 实现复制构造函数 369 8.3 在变量之间共享内存 370 8.3.1 定义联合 371 8.3.2 匿名联合 372 8.3.3 类和结构中的联合 372 8.4 运算符重载 373 …… 第9章 类继承和虚函数 第10章 标准模板库 第11章 调试技术 第12章 windows编程的概念 第13章 多核编程 第14章 使用mfc编写windows程序 第15章 处理菜单和工具栏 第16章 在窗口中绘图 第17章 创建文档和改进视图 第18章 使用对话框和控件 第19章 存储和打印文档 第20章 编写自己的dll

64,643

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧