C******b 发帖数: 360 | 1 先学了java,再学C++,一直都把C++当成java写:
1. Pointer尽量用smart pointer
2. 新建object尽量都用指针,基本都是pass by pointer
3. 函数基本都是virtual
4. template,STL都基本用java的generics style,template parameter都是super
class的指针
c++那些funky的operator,friend class啥的基本不用。
这些习惯好不好? |
b**********h 发帖数: 419 | |
C******b 发帖数: 360 | 3 我好像一直就这么写的,写了一两年,暂时没有严重问题,只是来特地请教各位大牛门
。
【在 b**********h 的大作中提到】 : 你实验好了来告诉我们
|
d****i 发帖数: 4809 | 4 没有问题,实际上把C++当C来写,或者把C++当Java来写都是没问题的,只要注意到一
些细微的差别尤其是performance上面的就可以了,比如你都用virtual函数就要看是否
一定需要在子类中override。提倡简单就是美的原则是对的。
【在 C******b 的大作中提到】 : 先学了java,再学C++,一直都把C++当成java写: : 1. Pointer尽量用smart pointer : 2. 新建object尽量都用指针,基本都是pass by pointer : 3. 函数基本都是virtual : 4. template,STL都基本用java的generics style,template parameter都是super : class的指针 : c++那些funky的operator,friend class啥的基本不用。 : 这些习惯好不好?
|
t**r 发帖数: 3428 | |
d*******r 发帖数: 3299 | 6 主要问题是: 想象比较理想...
实际干活 C++ 麻烦多多, 要求的经验要过硬
【在 C******b 的大作中提到】 : 先学了java,再学C++,一直都把C++当成java写: : 1. Pointer尽量用smart pointer : 2. 新建object尽量都用指针,基本都是pass by pointer : 3. 函数基本都是virtual : 4. template,STL都基本用java的generics style,template parameter都是super : class的指针 : c++那些funky的operator,friend class啥的基本不用。 : 这些习惯好不好?
|
A*******e 发帖数: 2419 | 7
+1
-1
1/2不矛盾吗?还是说你满屏都是unique_ptr?
-1
没看明白。
哪些funky?
【在 C******b 的大作中提到】 : 先学了java,再学C++,一直都把C++当成java写: : 1. Pointer尽量用smart pointer : 2. 新建object尽量都用指针,基本都是pass by pointer : 3. 函数基本都是virtual : 4. template,STL都基本用java的generics style,template parameter都是super : class的指针 : c++那些funky的operator,friend class啥的基本不用。 : 这些习惯好不好?
|
B********r 发帖数: 397 | 8 挺好,design 远比implementation重要 |
s******u 发帖数: 501 | 9
没问题
这个是很不好的习惯。为什么要用指针?C++非常重要的一点是尽量少用指针,能放在
stack的为什么要放在heap?能直接access的变量为什么非要用指针来做一个indirect
access?能用scope来实现变量的lifetime management为什么非要用指针的new/delete
来手动manage?
对于用smart pointer来替代bare pointer只是解决了上面说的第三个问题,但是如果
你在设计的时候清楚每一个变量的ownership和liftime,可以说99%的情况下你不需要
用指针,当然也不需要用smart pointer了
继承是仅次于freind的最强关联了,实际的设计中其实很少要用到继承这么强的关联,
考虑多使用has-a的关系替代is-a的关系。如果不需要继承,放着virtual是没有意义的
不懂
operator有好有坏。friend上面说了,是最强的关联,不常用是正常的
【在 C******b 的大作中提到】 : 先学了java,再学C++,一直都把C++当成java写: : 1. Pointer尽量用smart pointer : 2. 新建object尽量都用指针,基本都是pass by pointer : 3. 函数基本都是virtual : 4. template,STL都基本用java的generics style,template parameter都是super : class的指针 : c++那些funky的operator,friend class啥的基本不用。 : 这些习惯好不好?
|
w***g 发帖数: 5958 | 10 写得很明白,不错。
indirect
delete
【在 s******u 的大作中提到】 : : 没问题 : 这个是很不好的习惯。为什么要用指针?C++非常重要的一点是尽量少用指针,能放在 : stack的为什么要放在heap?能直接access的变量为什么非要用指针来做一个indirect : access?能用scope来实现变量的lifetime management为什么非要用指针的new/delete : 来手动manage? : 对于用smart pointer来替代bare pointer只是解决了上面说的第三个问题,但是如果 : 你在设计的时候清楚每一个变量的ownership和liftime,可以说99%的情况下你不需要 : 用指针,当然也不需要用smart pointer了 : 继承是仅次于freind的最强关联了,实际的设计中其实很少要用到继承这么强的关联,
|
g*********e 发帖数: 14401 | 11 效率不行 跟扎瓦一样慢
【在 C******b 的大作中提到】 : 先学了java,再学C++,一直都把C++当成java写: : 1. Pointer尽量用smart pointer : 2. 新建object尽量都用指针,基本都是pass by pointer : 3. 函数基本都是virtual : 4. template,STL都基本用java的generics style,template parameter都是super : class的指针 : c++那些funky的operator,friend class啥的基本不用。 : 这些习惯好不好?
|
N******K 发帖数: 10202 | 12 template parameter都是super class的指针
ParentClass a;
ChildClass<&a> b;
这个意思?
【在 C******b 的大作中提到】 : 先学了java,再学C++,一直都把C++当成java写: : 1. Pointer尽量用smart pointer : 2. 新建object尽量都用指针,基本都是pass by pointer : 3. 函数基本都是virtual : 4. template,STL都基本用java的generics style,template parameter都是super : class的指针 : c++那些funky的operator,friend class啥的基本不用。 : 这些习惯好不好?
|