mirror of
https://github.com/oldratlee/translations.git
synced 2026-11-04 14:44:34 +08:00
fix some typo
This commit is contained in:
@@ -211,9 +211,10 @@ struct Hsv { int hue, saturation, value };
|
||||
Hsv getHsv() const;
|
||||
```
|
||||
|
||||
> 【译注】:函数的『入参』和『出参』的混用会导致`API`接口语义的混乱,所以,使用指针,在调用的时候,实参需要加上`&`,这样在代码阅读的时候,可以看到是一个实参,有利有阅读。(但是这样做,在函数内就需要判断指针是否为空的情况,因为引用是不需要判断的,所以,这是一种 trade-off)
|
||||
>
|
||||
> 而如果这样的参与过多的话,最好使用一个结构体来把数据打包,一方面,为一组返回值取个名字,另一方面,这样有利用接口的简单。
|
||||
> 【译注】:函数的『入参』和『出参』的混用会导致 API 接口语义的混乱,所以,使用指针,在调用的时候,实参需要加上“&”,这样在代码阅读的时候,可以看到是一个『出参』,有利于代码阅读。(但是这样做,在函数内就需要判断指针是否为空的情况,因为引用是不需要判断的,所以,这是一种 trade-off)
|
||||
>
|
||||
> 另外,如果这样的参数过多的话,最好使用一个结构体来把数据打包,一方面,为一组返回值取个名字,另一方面,这样有利用接口的简单。
|
||||
|
||||
|
||||
### 4.1.2 按常量引用传参 vs. 按值传参
|
||||
|
||||
@@ -285,10 +286,8 @@ virtual void setOverwriteMode( bool b ) { overWrite = b; }
|
||||
|
||||
>【译注】:
|
||||
>
|
||||
> 1. 使用虚函数时,你需要对编译器的内部行为非常清楚,否则,你会在使用虚函数时,觉得有好些『古怪』的问题发生。
|
||||
> 2. 在`C++`中,会有一个基础类,这个基础类中已经实现好了很多功能,然后把其中的 —— 些函数放给子类去修改和实现。这种方法在父类和子类都是一组开发人员维护时没有什么问题,但是如果这是两组开发人员,这就会带来很多问题了,就像`Qt`这样,子类完全无法控制,全世界的开发人员想干什么就干什么。所以,子类的代码和父类的代码在兼容上就会出现很多很多问题。
|
||||
>
|
||||
> 所以,还是上面所说,其实,虚函数应该声明在接口的语义里(这就是设计模式的两个宗旨 —— 依赖于接口,而不是实现;钟爱于组合,而不是继承)。
|
||||
> 1. 使用虚函数时,你需要对编译器的内部行为非常清楚,否则,你会在使用虚函数时,觉得有好些『古怪』的问题发生。比如在创建数组对象的时候。
|
||||
> 2. 在`C++`中,会有一个基础类,这个基础类中已经实现好了很多功能,然后把其中的一些函数放给子类去修改和实现。这种方法在父类和子类都是一组开发人员维护时没有什么问题,但是如果这是两组开发人员,这就会带来很多问题了,就像`Qt`这样,子类完全无法控制,全世界的开发人员想干什么就干什么。所以,子类的代码和父类的代码在兼容上就会出现很多很多问题。所以,还是上面所说,其实,虚函数应该声明在接口的语义里(这就是设计模式的两个宗旨——依赖于接口,而不是实现;钟爱于组合,而不是继承。也是为什么Java和Go语言使用`interface`关键字的原因,C++在多态的语义上非常容易滥用)
|
||||
|
||||
### 4.2.2 虚函数 vs. 拷贝
|
||||
|
||||
@@ -413,7 +412,7 @@ int main() {
|
||||
}
|
||||
```
|
||||
|
||||
> 【译注】:上述的代码说明,如果返回值不是`const`的,代码可以顺利编译通过,然后并没有什么卵用,因为那个临时对像马上就被抛弃了。所以,这样的无用的代码最好还是在编译时报个错,以免当时头脑发热想错了。
|
||||
> 【译注】:上述的代码说明,如果返回值不是`const`的,代码可以顺利编译通过,然而并没有什么卵用,因为那个临时对像马上就被抛弃了。所以,这样的无用的代码最好还是在编译时报个错,以免当时头脑发热想错了,写了一段没用但还以为有用的代码。
|
||||
|
||||
### 4.3.3 返回值:非`const`的指针还是有`const`的指针
|
||||
|
||||
@@ -453,7 +452,7 @@ foreach (const QGraphicsItem *item, scene.items()) {
|
||||
(以`d-point`的典型做法(`idiom`)为例,我们可以在任何时候改变`Qt`类在内存表示(`memory representation`);但却不能在不破坏二进制兼容性的情况下把改变函数的签名,返回值从`const QFoo &`变为`QFoo`。)
|
||||
基于这个原因,除去对运行速度敏感(`speed is critical`)而重构不是问题的个别情形(例如,`QList::at()`),我们一般返回`QFoo`而不是`const QFoo &`。
|
||||
|
||||
> 【译注】:《Effective C++》中条款23:Don't try to return a reference when you must return an object
|
||||
> 【译注】:参看《Effective C++》中条款23:Don't try to return a reference when you must return an object
|
||||
|
||||
### 4.4.5 `const` vs. 对象的状态
|
||||
|
||||
|
||||
Reference in New Issue
Block a user