VC6.0中重载操作符函数无法访问类的私有成员

在 C++ 中,操作符(运算符)可以被重载以改写其实际操作。同时我们可以定义一个函数为类的朋友函数(friend function)以便使得这个函数能够访问类的私有成员,这个定义通常在头文件中完成。 在Visual C++中定义一般的函数为朋友函数通常是没有问题的。然而对某些重载操作符的函数,即使我们将它们定义为类的朋友函数,VC的编译器仍然会显示出错信息,认为这些朋友函数无权访问类的私有成员。我认为这应该是VC6.0的bug。

以指针或reference为参数的C++函数定义与调用对照表

初学者不易建立清晰的指针和reference概念,总结这个表以供快速参考: 假设有对象定义: MyObjectType obj1; 1. 值传递: 如果函数定义为: void myFunction( MyObjectType obj); 函数调用: myFunction(obj); //函数以外对象obj的值不会 改变 2. reference传递: 如果函数定义为: void myFunction( MyObjectType &obj); 函数调用: myFunction(obj); //函数以外对象obj的值会 改变 3. 指针传递: 如果函数定义为: void myFunction( MyObjectType *obj); 函数调用: myFunction(&obj); //需要dereference(&), 函数以外对象obj的值会 改变 要了解更多关于C++指针的概念请阅读C++基础教程指针篇

从Java到C++ — 对比Java与C++编程的不同

原作:Cay Horstmann 英文原文 翻译:Aqua  prglab.com 注:很多程序员包括本人在内都是先学会的Java,然后才学的C++,其实C++与Java有很多相似和互通之处,有相当的Java知识可以对应转化到C++概念,从而帮助我们快速上手。这篇文章介绍的内容就对从Java向C++转变很有帮助,所以翻译推荐给有同样需要的朋友。翻译中加入了本人的理解,不完全是全文照搬。有不明或异议,请参考原文,或留言讨论。还是那句话,推荐多读原版资料。 学习怎样从一种编程语言转移到另一种编程语言是今日的程序员必须面对的现实,还好,C++和Java有很多共同的特点,所以从Java转到C++就容易许多。C++比Java复杂很多,本文并没打算涵盖所有C++的功能。但是如果你能够熟练掌握本文中的所有知识点,也足够有效的使用C++了。

C++中Reference与指针(Pointer)的使用对比

引用(reference)和指针(pointer)是学C++过程中最令人头疼的问题,常常不知道什么时候用哪个合适,又常常弄混。找到Dan Saks的这篇文章,讲的很清楚,强烈推荐,所以翻译一下供大家参考。 ——————————————————————————— 以下译自Dan Saks的文章 References vs. Pointers 英文原文 ——————————————————————————— 了解引用reference与指针pointer到底有什么不同可以帮助你决定什么时候该用reference,什么时候该用pointer。 在C++ 中,reference在很多方面与指针(pointer)具有同样的能力。虽然多数C++程序员对于何时使用reference何时使用pointer 都会有一些直觉,但总还是会有些时候搞不清楚。如果你想要建立一个关于使用reference使用的清晰有理的概念, 又有必要了解到底reference和pointer有什么不同。