友元函数1、为什么要引入友元函数? 在实现类之间数据共享时,减少系统开销,提高效率 具体来说:为了使其他类的成员函数直接访问该类的私有变量,即:允许外面的类或函数去访问类的私有变量和保护变量,从而使两个类共享同一函数 优点:能够提高效率,表达简单、清晰缺点:友元函数破环了封装机制,尽量不使用成员.....
分类:
编程语言 时间:
2015-06-08 23:15:33
阅读次数:
283
有些情况下,允许特定的非成员函数访问一个类的私有成员,同时仍阻止一般的访问,这是很方便做到的。例如被重载的操作符,如输入或输出操作符,经常需要访问类的私有数据成员。
友元(frend)机制允许一个类将对其非公有成员的访问权授予指定的函数或者类,友元的声明以frend开始,它只能出现在类定义的内部,友元声明可以出现在类中的任何地方:友元不是授予友元关系的那个类的成员,所有它们不受其声明出现部分的访...
分类:
编程语言 时间:
2015-06-08 09:52:36
阅读次数:
135
错误例程:
#include
using namespace std;
template
class Student
{
private:
T age;
public:
Student(T age_) :age(age_){}
friend bool operator==(const Student& s1, const Student& s2);
};
int main()
{
...
分类:
其他好文 时间:
2015-06-05 10:25:00
阅读次数:
111
什么是运算符的重载?运算符与类结合,产生新的含义。为什么要引入运算符重载? 作用:为了实现类的多态性(多态是指一个函数名有多种含义)怎么实现运算符的重载?方式:类的成员函数 或 友元函数(类外的普通函数)规则:不能重载的运算符有 . 和 .* 和 ?: 和 :: 和 sizeof友元函数和成员函数的...
分类:
编程语言 时间:
2015-06-04 15:33:30
阅读次数:
154
这学期的大作业感觉挺简单的,就是写一个模板类MyList,实现一些Python中的list的操作(类似于c++中的vector,但是不支持迭代器)。这些功能都很简单,唯一麻烦的就是模板类特别烦,特别是友元函数,首先要声明这个类,然后声明是函数的声明,然后是类中友元函数的声明,最后是实现。友元函数的声...
分类:
编程语言 时间:
2015-06-03 23:25:18
阅读次数:
204
(1)先建立一个Point(点)类,包含数据成员x,y(坐标点);
(2)以Point为基类,派生出一个Circle(圆)类,增加数据成员(半径),基类的成员表示圆心;
(3)编写上述两类中的构造、析构函数及必要运算符重载函数(本项目主要是输入输出);
(4)定义友元函数int locate,判断点p与圆的位置关系(返回值0 圆外);
代码
#include
#include ...
分类:
其他好文 时间:
2015-05-29 23:18:36
阅读次数:
177
(4)定义友元函数int locate,判断点p与圆的位置关系(返回值0 圆外);
int main( )
{
Circle c1(3,2,4),c2(4,5,5); //c2应该大于c1
Point p1(1,1),p2(3,-2),p3(7,3); //分别位于c1内、上、外
cout<<"圆c1: "<<c1;
cout<<"点p1: "<<p1...
分类:
其他好文 时间:
2015-05-27 10:10:59
阅读次数:
131
// CTest.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include using namespace std;class Cpoint{private: double x,y;public: Cpoint(double x...
分类:
编程语言 时间:
2015-05-23 12:56:50
阅读次数:
156
问题描述:
(1)先建立一个Point(点)类,包含数据成员x,y(坐标点);
(2)以Point为基类,派生出一个Circle(圆)类,增加数据成员(半径),基类的成员表示圆心;
(3)编写上述两类中的构造、析构函数及必要运算符重载函数(本项目主要是输入输出);
(4)定义友元函数int locate,判断点p与圆的位置关系(返回值0 圆外);
int mai...
分类:
其他好文 时间:
2015-05-21 15:41:47
阅读次数:
141
问题描述:
(1)先建立一个Point(点)类,包含数据成员x,y(坐标点);
(2)以Point为基类,派生出一个Circle(圆)类,增加数据成员(半径),基类的成员表示圆心;
(3)编写上述两类中的构造、析构函数及必要运算符重载函数(本项目主要是输入输出);
(4)定义友元函数int locate,判断点p与圆的位置关系(返回值0 圆外);
int main( )
{
C...
分类:
其他好文 时间:
2015-05-21 14:21:24
阅读次数:
176