C++学习-类域、友元、运算符重载、对象的生存期,可见域,作用域(2)

一、友元:

1、类的私有成员只有在类的内部访问,类的外部函数不能访问他们。

2、当一个函数定义为类的友元函数,这时函数就可以访问该类的私有成员。同时可以将类B定义为本类A的友元类,这样B类就可以访问类A的任何成员

3、友元函数用friend来声明,基本格式为:

friend 函数原型;

4、友元函数的重载:(要想一组重载函数全部成为类的友元,必须意义声明)

class exp

{

public:
friend void test(int);

};

void test();//not

void test(int);

void test(double);//not

5、友元类(类A作为类B的友元类,则A中所有的成员函数都是B的友元函数,可以访问B中的所有成员,A可以在B的public部分或者private部分进行声明,方法如下:friend [class]<类名>;//友元类类名)

二、运算符重载(为了使对用户自定义数据类型的数据的操作与内置数据的操作形式一样)

运算符是一种通俗、直观的函数,系统本身就提供了多个重载版本。

int operator +(int,int)

double operator +(double,double)

原文地址:https://www.cnblogs.com/lyp1010/p/11737073.html

时间: 2024-10-17 13:36:38

C++学习-类域、友元、运算符重载、对象的生存期,可见域,作用域(2)的相关文章

C++ Primer Plus学习笔记之运算符重载

C++ Primer Plus学习笔记之运算符重载 1,成员函数和友元函数选择的建议 下面我们先看两个例子: 成员函数重载 #include<iostream> using namespace std; class Complex { public: Complex(double r=0,double i=0) { re=r; im=i; } Complex operator+(const Complex& obj); Complex operator!(); void Display

C++:运算符重载函数之友元运算符重载

5.2.2 友元运算符重载函数 运算符重载函数一般采用两种形式定义: 一是定义为它将要操作的类的成员函数(简称运算符重载函数): 二是定义为类的友元函数(简称为友元运算符重载函数). 1.定义友元运算符重载函数的语法如下: 在类的内部: friend 函数类型 operator运算符(形参表) { 函数体 } 在类的内部声明,在类外定义: class X{ ... friend 函数类型 operator运算符(形参表): }; 函数类型 X::operator运算符(形参表) { 函数体 }

C++学习笔记之运算符重载

一.运算符重载基本知识 在前面的一篇博文 C++学习笔记之模板(1)——从函数重载到函数模板 中,介绍了函数重载的概念,定义及用法,函数重载(也被称之为函数多态)就是使用户能够定义多个名称相同但特征标(参数列表)不同的函数,目的是在对不同类型的参数执行相同的操作时只用一个同名的函数. 运算符重载,就是使同一个运算符在面临不同类型的数据时作出不同的操作(函数重载是操作相同),就是让同一个运算符有多重功能.实际上我们经常用的许多运算符已被重载,例如,将*用于地址,将得到存储在这个地址中的值:但将它用

C++:友元运算符重载函数

运算符重载函数:实现对象之间进行算数运算,(实际上是对象的属性之间做运算),包括+(加号).-(减号).*./.=.++.--.-(负号).+(正号) 运算符重载函数分为:友元运算符重载函数.成员运算符重载函数 运算符运算符重载函数按运算类型为:双目运算符重载函数,如加.减.乘.除.赋值:   单目运算符重载函数:自加.自减.取正负号 切记:成员运算符. 和->,sezeof等不能重载.运算符重载函数的参数至少有一个是类类型或引用类型, 下面为友元运算符重载函数举例: 1 #include<i

PKU C++程序设计实习 学习笔记4 运算符重载

第四章 运算符重载 4.1 运算符重载的基本概念 1. 运算符 2. 自定义数据类型与运算符重载 C++提供了数据抽象的手段:用户自己定义数据类型 -- 类 ? 调用类的成员函数->操作它的对象 类的成员函数->操作对象时,很不方便 ? 在数学上,两个复数可以直接进行+/-等运算 Vs. 在C++中,直接将+或-用于复数是不允许的 3. 运算符重载 对抽象数据类型也能够直接使用C++提供的运算符 ? 程序更简洁 ? 代码更容易理解 运算符重载 ? 对已有的运算符赋予多重的含义 ? 使同一运算符

c++知识点总结--友元&amp;运算符重载

友元函数(不属于类) 可以访问类的私有变量,以及私有函数 友元函数在类内声明需要friend关键字,类外定义就不需要 友元函数可以直接在类内定义 友元函数必须包含对象指针 友元类(不适用继承,只适用当前类) 若F类是A类的友元类,则F类的所有成员函数都是A类的友元函数 友元类通常设计为一种对数据操作或类之间传递消息的辅助类 (1) 友元关系不能被继承. (2) 友元关系是单向的,不具有交换性.若类B是类A的友元,类A不一定是类B的友元,要看在类中是否有相应的声明. (3) 友元关系不具有传递性.

C++学习(五)_运算符重载

重载运算符 首先我们来看重载运算符的定义: 重载的运算符是带有特殊名称的函数,函数名是由关键字 operator 和其后要重载的运算符符号构成的.与其他函数一样,重载运算符有一个返回类型和一个参数列表. 在C++中支持的重载运算符有: 不支持的重载运算符: 重载运算符的规则 运算符重载为类的成员函数的一般语法形式为: 函数类型 operator 运算符(形参表) { 函数体: } 运算符重载为类的友元函数的一般语法形式为: friend 函数类型 operator 运算符(形参表) { 函数体:

Python 多态 对象常用内置函数 运算符重载 对象迭代器 上下文管理

一 多态 1.什么是多态:多态不是一个具体的技术或代码.指的时候多个不同类型对象可以响应同一个方法,产生不同的结果. 2.使用多多态的好处:提高了程序的灵活性,拓展性 3.如何实现:鸭子类型 就是典型的多态 多种不同类型 使用方法一样 4.案例 class Cat(): def bark(self): print("喵喵喵") def run(self): print("四条腿跑!") def sleep(self): print("趴着睡!")

scala学习手记7 - 运算符重载

从语法上来说scala是没有运算符的.之前的一节里也曾提到过scala的运算符实际上是方法名,如1 + 2实际上就是1.+(2).我们可以将之视为运算符,是因为scala的一个特性:如果方法的参数小于等于1个的话,那么"."和括号就都是可选的. scala的运算符重载指的就是重载+.-这样的符号--和C.java或者python等语言不一样,我们需要自己定义这些符号如何实现. 下面看一个"+"运算符实现的例子.这里定义了一个Complex类,Complex指的是复数

C++:运算符重载函数之&quot;++&quot;、&quot;--&quot;、&quot;[ ]&quot;的应用

5.2.5 "++"和"--"的重载 对于前缀方式++ob,可以用运算符函数重载为: ob.operator++() //成员函数重载 或 operator++(X &ob) //友元函数重载,其中ob为类X的对象的引用 对于后缀方式++ob,可以用运算符函数重载为: ob.operator++(int) //成员函数重载 或 operator++(X &ob,int) //友元函数重载,其中ob为类X的对象的引用 调用时,参数int一般被传递给值0