Fork me on GitHub
上一页 1 ··· 7 8 9 10 11 12 13 下一页
摘要: 一个关于赋值的有趣的事情是你可以将它们链在一起: 同样有趣的是赋值采用右结合律,所以上面的赋值链被解析成下面这个样子: 在这里,15被赋值给z,然后赋值的结果(更新的z)被赋值给y,再然后赋值的结果(更新的Y)被赋值给x。 实现这个赋值链的方法是使赋值返回指向左边参数的引用,这也是你在为你的类实现赋 阅读全文
posted @ 2017-02-15 23:42 HarlanC 阅读(635) 评论(0) 推荐(0) 编辑
摘要: 1.关于构造函数的一个违反直觉的行为 我会以重复标题开始:你不应该在构造或者析构的过程中调用虚函数,因为这些调用的结果会和你想的不一样。如果你同时是一个java或者c#程序员,那么请着重注意这个条款,因为这是c++同它们不一样的地方。 假设你已经有一个为股票交易建模的类继承体系,它可以买卖股票等。这 阅读全文
posted @ 2017-02-15 00:04 HarlanC 阅读(1156) 评论(0) 推荐(0) 编辑
摘要: 1.为什么c++不喜欢析构函数抛出异常 C++并没有禁止析构函数出现异常,但是它肯定不鼓励这么做。这是有原因的,考虑下面的代码: 当vector V被销毁,V有责任将它包含的所有Widgets都销毁。假设v含有有10个Widgets对象,当销毁第一个Widgets对象时,抛出了一个异常。其余的9个仍 阅读全文
posted @ 2017-02-14 07:34 HarlanC 阅读(1045) 评论(0) 推荐(0) 编辑
摘要: 1. 继承体系中关于对象释放遇到的问题描述 1.1 手动释放 关于时间记录有很多种方法,因此为不同的计时方法创建一个TimeKeeper基类和一些派生类就再合理不过了: 许多客户端只想访问时间而不想知道关于时间计算的细节,所以可以创建一个工厂方法,这个工厂方法返回一个指向新创建的派生类对象的基类指针 阅读全文
posted @ 2017-02-13 19:01 HarlanC 阅读(989) 评论(0) 推荐(1) 编辑
摘要: 问题描述-阻止对象的拷贝 现实生活中的房产中介卖房子,一个服务于这个中介的软件系统很自然的会有一个表示要被销售的房屋的类: 每个房产中介会立刻指出来,要销售房屋的每个属性都是唯一的,没有两个完全一样的房屋。在这种情况下,拷贝一个HomeForSale对象就没有任何意义了。你在怎么能拷贝一些独一无二的 阅读全文
posted @ 2017-02-13 09:03 HarlanC 阅读(1338) 评论(0) 推荐(1) 编辑
摘要: 1 编译器会默认生成哪些函数 什么时候空类不再是一个空类?答案是用c++处理的空类。如果你自己不声明,编译器会为你声明它们自己版本的拷贝构造函数,拷贝赋值运算符和析构函数,如果你一个构造函数都没有声明,编译器同样会为你声明一个默认拷贝构造函数。这些所有的函数会是public和inline的(Item 阅读全文
posted @ 2017-02-12 12:25 HarlanC 阅读(1368) 评论(0) 推荐(0) 编辑
摘要: C++在对象的初始化上是变化无常的,例如看下面的例子: 在一些上下文中,x保证会被初始化成0,在其他一些情况下却不能够保证。看下面的例子: P的数据成员有时候保证能够被初始化(成0),有时候却不能。如果你从不存在未初始化对象的语言中转到c++, 就需要注意了,因为这很重要。 1. 使用未初始化对象的 阅读全文
posted @ 2017-02-11 20:23 HarlanC 阅读(976) 评论(0) 推荐(1) 编辑
摘要: Const可以修饰什么? Const 关键字是万能的,在类外部,你可以用它修饰全局的或者命名空间范围内的常量,也可以用它来修饰文件,函数和块作用域的静态常量。在类内部,你可以使用它来声明静态或者非静态的数据成员。对于指针来说,你可以指定指针本身是不是const,指针指向的数据是不是const,两者可 阅读全文
posted @ 2017-02-09 23:01 HarlanC 阅读(794) 评论(0) 推荐(0) 编辑
摘要: 这个条目叫做,尽量使用编译器而不要使用预处理器更好。#define并没有当作语言本身的一部分。 例如下面的例子: 符号名称永远不会被编译器看到。它可能在源码到达编译器之前被预处理器移除。ASPECT_RATIO 最终不会进入符号表,如果因为这个常量的使用而导致编译错误,会使你非常迷惑,因为错误信息会 阅读全文
posted @ 2017-02-08 07:53 HarlanC 阅读(1027) 评论(0) 推荐(0) 编辑
摘要: Item 1 将c++视为一个语言联邦 如今的c++已经是一个多重泛型变成语言。支持过程化,面向对象,函数式,泛型和元编程的组合。这种强大使得c++无可匹敌,却也带来了一些问题。所有“合适的”规则看上去都有例外。我们怎样理解这样一门语言? 最容易的方法是不要将其看成单一的一门语言而是将其看成是一个有 阅读全文
posted @ 2017-02-06 22:24 HarlanC 阅读(1160) 评论(3) 推荐(0) 编辑
上一页 1 ··· 7 8 9 10 11 12 13 下一页