编写高质量代码——运算符重载,是成员函数还是友元函数...
分类:
其他好文 时间:
2014-06-20 13:30:30
阅读次数:
164
在介绍友元函数前,先介绍一些概念
公用(public)的成员:在类外可以访问
私有(private)成员:只有本类中的函数可以访问
友元(friend):友元可以访问与其有好友关系的类中的私有成员——有限制的共享
友元包括友元函数和友元类
友元函数:如果在本类以外的其它地方定义的函数,在类体中用friend进行声明,此函数称为类的友元函数,友元函数可以访问这个类中的私有成员
友...
分类:
其他好文 时间:
2014-06-20 09:05:42
阅读次数:
302
问1:子类继承了父类的所有成员,对吗?答1:错,子类没有继承父类的构造函数,析构函数,operator=和友元函数。问2:父类指针指向子类对象,通过该指针能够调用子类特有(父类没有)的函数吗?答2:不能,见下例。#include
using namespace std;class A{};class...
分类:
其他好文 时间:
2014-06-11 07:18:16
阅读次数:
193
运算符重载函数的限制:五个不能实现重载的符号:".", ".*", "::", "?",
"sizeof";重载运算符可以定义为类成员函数(这时候可以向当前对象发送消息的动作执行操作),也可定义为全局函数(一般为对应类的友元函数,此类函数需要显式指定所有参数,并且如果有转换构造函数,则可以使用于所有...
分类:
编程语言 时间:
2014-06-06 09:25:44
阅读次数:
428
本文用指针形式实现了先进先出的队列,与栈队列类似,需要设计一个队列节点类,一个队列类,同时队列类为节点类的友元函数;不过与链栈不同的是,链栈仅用单一指针来实现入栈和出栈而链队列需要有front和rear两个指针(皆为队列节点类指针),front指针负责处理出列,rear处理入列#includeusi...
分类:
其他好文 时间:
2014-05-24 11:52:18
阅读次数:
266
#include#includeusing namespace std;class
Text{public: Text():a(1){}private: int a; void display(){ cout<< "hello
world"<<endl;} friend vo...
分类:
编程语言 时间:
2014-05-22 01:04:05
阅读次数:
276
友元类:C++中的友元函数和友元类友元函数、友元类、访问私有数据成员、友元关系[C++]ZLib:c++
zlib(qt)压缩与解压缩基础:[转载]C/C++中单井号与双井号的使用:http://happyboy200032.blog.163.com/blog/static/469031132012...
分类:
编程语言 时间:
2014-05-21 18:08:40
阅读次数:
271
1、重载赋值运算符=赋值运算符用于同类对象间的相互赋值。赋值运算符只能被重载为类的非静态成员函数,不能重载为友元函数和普通函数。对于用户自定义的类而言,如果没有重载赋值运算符,那么C++编译器会为该类提供一个默认的重载赋值运算符成员函数。默认赋值运算符的工作方式是按位对拷,将等到右边对象的非静态成员...
分类:
编程语言 时间:
2014-05-12 13:15:06
阅读次数:
507
0、重载一元操作符的方法一元运算符即只需要一个操作用的运算符,如取地址运算符(&)、复数(-)、自减(--)、自加(++)等。运算符重载可以分为3种方式:类的非静态成员函数、类的友元函数、普通函数。例如有
1 个操作数 a,一元运算符?(表示一个一元运算符),a? 或者?a 的操作会被解释为下面2种...
分类:
编程语言 时间:
2014-05-09 23:35:00
阅读次数:
887
1、重载二元操作符的方法二元运算符又称为双目运算符,即需要2个操作数的运算符,例如 + - * /
等。运算符重载可以分为3种方式:类的非静态成员函数、类的友元函数、普通函数。例如有 2 个操作数 a 和 b,二元运算符 ? (表示一个二元运算符),a ? b
的操作会被解释为下面2种形式之一//a...
分类:
编程语言 时间:
2014-05-09 09:51:46
阅读次数:
487