r****t 发帖数: 10904 | 1 【 以下文字转载自 Programming 讨论区 】
发信人: repast (xebec), 信区: Programming
标 题: c++ 里面 this pointer 是完全 un necessary 的吗?
发信站: BBS 未名空间站 (Fri Dec 30 13:20:47 2011, 美东)
以前一直不自觉的用,如果所有 unqualified-id 都默认是通过 this pointer, 是不
是 this pointer 是完全不必要的? |
d********t 发帖数: 9628 | 2 很多时候要cast this到别的type,还有要传递this的地址,template里面很多时候也
必须指明用this
【在 r****t 的大作中提到】 : 【 以下文字转载自 Programming 讨论区 】 : 发信人: repast (xebec), 信区: Programming : 标 题: c++ 里面 this pointer 是完全 un necessary 的吗? : 发信站: BBS 未名空间站 (Fri Dec 30 13:20:47 2011, 美东) : 以前一直不自觉的用,如果所有 unqualified-id 都默认是通过 this pointer, 是不 : 是 this pointer 是完全不必要的?
|
r****t 发帖数: 10904 | 3 template 里面怎么用给个例子吧?
【在 d********t 的大作中提到】 : 很多时候要cast this到别的type,还有要传递this的地址,template里面很多时候也 : 必须指明用this
|
d********t 发帖数: 9628 | 4 忘记了,记得当时看thinking in c++ vol2的时候见过,太难了,搞不定。
不过this用得最普遍的就是operator=里面那个return *this;
【在 r****t 的大作中提到】 : template 里面怎么用给个例子吧?
|
r****t 发帖数: 10904 | 5 对的,这个是一个必须用的地方。thinking in c++ vol2 如何?我看了 primer 觉得
挺后悔的。
【在 d********t 的大作中提到】 : 忘记了,记得当时看thinking in c++ vol2的时候见过,太难了,搞不定。 : 不过this用得最普遍的就是operator=里面那个return *this;
|
d********t 发帖数: 9628 | 6 primer好东西啊,我看过不下5遍,85%的情况下绝对够用了,当然不只指面试。
vol2烂就一个字
【在 r****t 的大作中提到】 : 对的,这个是一个必须用的地方。thinking in c++ vol2 如何?我看了 primer 觉得 : 挺后悔的。
|
r****t 发帖数: 10904 | 7 我倒是发现一个不是必要,但是方便的地方,不知道和你说的 template 是不是一个意
思. 说起来有点绕,单起一行:
是在 derived class template 里面需要 call an inherited method (not
overwritten) from the base class template, 但是这个 method signature 不依赖
于任何 template argument 的时候,如果直接
method( args );
编译器会有问题,不过 -fpermissive 能过。
stackwithmin.cpp: In member function 'void StackWMin::pop()':
stackwithmin.cpp:29: error: there are no arguments to 'top' that depend on a
template parameter, so a declaration of 'top' must be available
stackwithmin.cpp:29: note: (if you use '-fpermissive', G++ will accept your
code, but allowing the use of an undeclared name is deprecated)
如果这里用
this->method( args );
的话就没有任何 complain 了。
不过我一般都是更老实的写了 base 部分比如
base_class::method( args );
这样也行,不知道效率上是不是有区别,没有用 this pointer 方便。
【在 d********t 的大作中提到】 : 忘记了,记得当时看thinking in c++ vol2的时候见过,太难了,搞不定。 : 不过this用得最普遍的就是operator=里面那个return *this;
|
r****t 发帖数: 10904 | 8 我满打满算差不多一遍了,太花时间。虽说还是学到了些新东西,但是感觉不够全面。觉得这书最好当工具书查,但是做工具书又不如 standard 和 stl 的文档,高不就低不成很尴尬。
【在 d********t 的大作中提到】 : primer好东西啊,我看过不下5遍,85%的情况下绝对够用了,当然不只指面试。 : vol2烂就一个字
|
d********t 发帖数: 9628 | 9 考,你真认真啊!居然给找出来了!有这股子劲,啥法轮功都随便去啊!
a
【在 r****t 的大作中提到】 : 我倒是发现一个不是必要,但是方便的地方,不知道和你说的 template 是不是一个意 : 思. 说起来有点绕,单起一行: : 是在 derived class template 里面需要 call an inherited method (not : overwritten) from the base class template, 但是这个 method signature 不依赖 : 于任何 template argument 的时候,如果直接 : method( args ); : 编译器会有问题,不过 -fpermissive 能过。 : stackwithmin.cpp: In member function 'void StackWMin::pop()': : stackwithmin.cpp:29: error: there are no arguments to 'top' that depend on a : template parameter, so a declaration of 'top' must be available
|
r****t 发帖数: 10904 | 10 真是这个?完全是凑巧,在写 cracking 的题的时候遇到的。去法轮功的话算法差太远了,还得练几个月再投。
【在 d********t 的大作中提到】 : 考,你真认真啊!居然给找出来了!有这股子劲,啥法轮功都随便去啊! : : a
|
|
|
d********t 发帖数: 9628 | 11 啥是cracking啊?指点一下吧。
远了,还得练几个月才行。
【在 r****t 的大作中提到】 : 真是这个?完全是凑巧,在写 cracking 的题的时候遇到的。去法轮功的话算法差太远了,还得练几个月再投。
|
r****t 发帖数: 10904 | 12 cracking the coding interview. 你不是看过么?
拿 c++ 写一下就发现 c++ 面算法要难不少,java code 都不用管内存的。
【在 d********t 的大作中提到】 : 啥是cracking啊?指点一下吧。 : : 远了,还得练几个月才行。
|
d********t 发帖数: 9628 | 13 我就看过CareerCup,是一个东西吗?
【在 r****t 的大作中提到】 : cracking the coding interview. 你不是看过么? : 拿 c++ 写一下就发现 c++ 面算法要难不少,java code 都不用管内存的。
|
r****t 发帖数: 10904 | 14 就是一个东西
【在 d********t 的大作中提到】 : 我就看过CareerCup,是一个东西吗?
|
d********t 发帖数: 9628 | 15 你可以搞个C++版本的卖钱。
【在 r****t 的大作中提到】 : 就是一个东西
|
r****t 发帖数: 10904 | 16 正视现实吧,我觉得现在 java has won the industry, and is on its way to world dominance... c++ 越学越明白为啥它大部分地方比不过 java, 一直会是 niche
【在 d********t 的大作中提到】 : 你可以搞个C++版本的卖钱。
|
C***y 发帖数: 2546 | 17 只会c++,不会java咋办呢
world dominance... c++ 越学越明白为啥它大部分地方比不过 java, 一直会是 niche
【在 r****t 的大作中提到】 : 正视现实吧,我觉得现在 java has won the industry, and is on its way to world dominance... c++ 越学越明白为啥它大部分地方比不过 java, 一直会是 niche
|
B******5 发帖数: 4676 | 18 5遍啊,ORZ
话说Thinking in C++值得看么?真厚。。。
【在 d********t 的大作中提到】 : primer好东西啊,我看过不下5遍,85%的情况下绝对够用了,当然不只指面试。 : vol2烂就一个字
|
d********t 发帖数: 9628 | 19 c++效率比java高啊。
world dominance... c++ 越学越明白为啥它大部分地方比不过 java, 一直会是 niche
【在 r****t 的大作中提到】 : 正视现实吧,我觉得现在 java has won the industry, and is on its way to world dominance... c++ 越学越明白为啥它大部分地方比不过 java, 一直会是 niche
|
r****t 发帖数: 10904 | 20 不知啊,我也不会。。。
niche
【在 C***y 的大作中提到】 : 只会c++,不会java咋办呢 : : world dominance... c++ 越学越明白为啥它大部分地方比不过 java, 一直会是 niche
|
S**I 发帖数: 15689 | 21 最好是新鲜码工们都去学Java,这样C++老码工们就不用担心饭碗了。:)
world dominance... c++ 越学越明白为啥它大部分地方比不过 java, 一直会是 niche
【在 r****t 的大作中提到】 : 正视现实吧,我觉得现在 java has won the industry, and is on its way to world dominance... c++ 越学越明白为啥它大部分地方比不过 java, 一直会是 niche
|