编写高质量代码——运算符重载,是成员函数还是友元函数...
分类:
其他好文 时间:
2014-06-20 13:30:30
阅读次数:
164
在介绍友元函数前,先介绍一些概念
公用(public)的成员:在类外可以访问
私有(private)成员:只有本类中的函数可以访问
友元(friend):友元可以访问与其有好友关系的类中的私有成员——有限制的共享
友元包括友元函数和友元类
友元函数:如果在本类以外的其它地方定义的函数,在类体中用friend进行声明,此函数称为类的友元函数,友元函数可以访问这个类中的私有成员
友...
分类:
其他好文 时间:
2014-06-20 09:05:42
阅读次数:
302
C++嵌套类1、嵌套类的名字只在外围类可见。2、类的私有成员只有类的成员和友元可以访问,因此外围类不可以访问嵌套类的私有成员。嵌套类可以访问外围类的成员(通过对象、指针或者引用)。3、一个好的嵌套类设计:嵌套类应该设成私有。嵌套类的成员和方法可以设为public。4、嵌套类可以直接访问外围类的静态成...
分类:
编程语言 时间:
2014-06-11 13:20:59
阅读次数:
286
问1:子类继承了父类的所有成员,对吗?答1:错,子类没有继承父类的构造函数,析构函数,operator=和友元函数。问2:父类指针指向子类对象,通过该指针能够调用子类特有(父类没有)的函数吗?答2:不能,见下例。#include
using namespace std;class A{};class...
分类:
其他好文 时间:
2014-06-11 07:18:16
阅读次数:
193
#include
using namespace std;
class Date; //对Date类的提前引用声明
class Time
{
public:
Time(int,int,int);
void add_a_second(Date &); //增加1秒,1秒后可能会到了下一天,乃到下一月、下一年
void display(Date &); //显示时间,...
分类:
其他好文 时间:
2014-06-08 18:17:22
阅读次数:
216
#include
#include
using namespace std;
class CPoint//点类
{
private:
double x;//横坐标
double y;//纵坐标
public:
//使用初始化表初始化数据成员
CPoint(double xx=0,double yy=0):x(xx),y(yy){}
...
分类:
其他好文 时间:
2014-06-08 15:38:11
阅读次数:
299
运算符重载函数的限制:五个不能实现重载的符号:".", ".*", "::", "?",
"sizeof";重载运算符可以定义为类成员函数(这时候可以向当前对象发送消息的动作执行操作),也可定义为全局函数(一般为对应类的友元函数,此类函数需要显式指定所有参数,并且如果有转换构造函数,则可以使用于所有...
分类:
编程语言 时间:
2014-06-06 09:25:44
阅读次数:
428
嵌套类局部类《c++ primer
3th》C++嵌套类1、嵌套类的名字只在外围类可见。2、类的私有成员只有类的成员和友元可以访问,因此外围类不可以访问嵌套类的私有成员。嵌套类可以访问外围类的成员(通过对象、指针或者引用)。3、一个好的嵌套类设计:嵌套类应该设成私有。嵌套类的成员和方法可以设为pub...
分类:
其他好文 时间:
2014-05-30 18:47:14
阅读次数:
487
声明:①友元关系不能被继承和传递,基类的友元对派生类没有特殊的访问权限,派生类中的友元更不能访问基类中的成员。
②友元不是成员函数,所以不能使用作用域解析符来指出要使用哪个函数。这个问题的解决方法是使用强制类型转换,以便匹配原型时能够选择正确地函数。
③基类的友元能够访问派生类中的基类成分,这是由于自动将派生类转化成了基类,不是因为继承,但是不能访问...
分类:
其他好文 时间:
2014-05-24 15:12:03
阅读次数:
287
本文用指针形式实现了先进先出的队列,与栈队列类似,需要设计一个队列节点类,一个队列类,同时队列类为节点类的友元函数;不过与链栈不同的是,链栈仅用单一指针来实现入栈和出栈而链队列需要有front和rear两个指针(皆为队列节点类指针),front指针负责处理出列,rear处理入列#includeusi...
分类:
其他好文 时间:
2014-05-24 11:52:18
阅读次数:
266