1. 哪些不可以被重载? . .*2. 成员函数与非成员函数的运算符重载函数区别? 运算符左侧是否是类对象本身.3. a++, ++a 运算 X operator ++ (const X& x); const X& operator ++ (const X& x, int); int 参数作为哑元....
分类:
编程语言 时间:
2014-10-04 12:34:46
阅读次数:
197
常见的不不能声明为虚函数的有:普通函数(非成员函数);静态成员函数;内联成员函数;构造函数;友元函数。1、为什么C++不支持普通函数为虚函数?普通函数(非成员函数)只能被overload,不能被override,声明为虚函数也没有什么意思,因此编译器会在编译时邦定函数。2、为什么C++不支持构造函数...
分类:
编程语言 时间:
2014-09-26 13:07:38
阅读次数:
171
常见的不不能声明为虚函数的有:普通函数(非成员函数);静态成员函数;内联成员函数;构造函数;友元函数。1、为什么C++不支持普通函数为虚函数?普通函数(非成员函数)只能被overload,不能被override,声明为虚函数也没有什么意思,因此编译器会在编译时邦定函数。2、为什么C++不支持构造函数...
分类:
编程语言 时间:
2014-09-17 18:07:52
阅读次数:
241
前言 相信很多使用C++语言的人都有这么一种错误的观点 - 除了主函数,其他函数都应当声明为某个类的成员函数,以实现封装性。 这种观点错在哪里?我们又该如何在成员函数与非成员函数之间进行选择呢? 针对这个问题,本文将给出一种非常科学的解决方案。问题分析 假定有一个网页浏览器类,其中有用来清除...
分类:
其他好文 时间:
2014-09-16 23:25:51
阅读次数:
179
首先请看下面的语句:
Point3d obj;
Point3d *ptr = &obj;
当使用上述指针或者对象调用成员函数Func()时,会有:
obj.Func();
ptr->Func();
上述调用的背后到底完成了一些什么呢?
假设Func函数的定义如下:
Point3d Point3d::Func() const
{
Float a = getA();...
分类:
编程语言 时间:
2014-09-05 22:29:42
阅读次数:
226
成员函数和非成员函数最大的区别在于成员函数可以是虚拟的而非成员函数不行。所以,如果有个函数必须进行动态绑定(见条款38),就要采用虚拟函数,而虚拟函数必定是某个类的成员函数。如果函数不必是虚拟的,情况就稍微复杂一点。看下面表示有理数的一个类:class rational {public: rati....
分类:
其他好文 时间:
2014-08-14 15:58:38
阅读次数:
185
C++编译错误cannot have cv-qualifier
在C++中CV指const和volatile两个关键字。有两种情况不能使用CV限定。
一、非成员函数不能含有CV限定,即const和volatile限定
#include
using namespace std;
double getArea() const
{
return ...
分类:
编程语言 时间:
2014-07-31 20:52:07
阅读次数:
227
友元是一种定义在类外部的普通函数或类,但它需要在类体内进行说明,为了与该类的成员函数加以区别,在说明时前面加以关键字friend。友元不是成员函数,但是它可以访问类中的私有成员。友元的作用在于提高程序的运行效率,但是,它破坏了类的封装性和隐藏性,使得非成员函数可以访问类的私有成员。...
分类:
编程语言 时间:
2014-07-29 22:09:02
阅读次数:
293
C++中的友元机制允许类的非公有成员被一个类或者函数访问,友元按类型分为三种:普通非类成员函数作为友元,类的成员函数作为友元,类作为友元。
1 友元的内容
友元包括友元的声明以及友元的定义。友元的声明默认为了extern,就是说友元类或者友元函数的作用域已经扩展到了包含该类定义的作用域,所以即便我们在类的内部定义友元函数也是没有关系的。
2 普通的非成员函数友元
这类友元函数通常是操作符,...
分类:
编程语言 时间:
2014-07-23 13:37:47
阅读次数:
354
经验:当我们编写一个 class template, 而它所提供之"与此 template 相关的"函数支持"所有参数之隐式类型转换"时,请将那些函数定义为 "class template内部的 friend 函数"。
示例:
template
class Rational{
public:
Rational(const T &numerator = 0, const T &denominator = 1) // Item 20 对于自定义类型以passed by referenc...
分类:
编程语言 时间:
2014-07-14 13:52:39
阅读次数:
173