C++走向远洋——34(友元函数,成员函数和一般函数的区别)
*/
* Copyright (c) 2016,烟台大学计算机与控制工程学院
* All rights reserved.
* 文件名:youyuan.cpp
* 作者:常轩
* 微信公众号:Worldhello
* 完成日期:2016年4月10日
* 版本号:V1.0
* 问题描述:成员函数,友元函数和一般函数的区别
* 程序输入:无
* 程序输出:见运行结果
*/ #include <iostream>
using namespace std;
class Time
{
public:
Time(int h,int m,int s):hour(h),minute(m),sec(s) {}
void display1(); //display1是成员函数
friend void display2(Time &); //display2是友元函数
int getHour(){return hour;}
int getMinute(){return minute;}
int getSec(){return sec;}
private:
int hour;
int minute;
int sec;
};
void Time::display1() //成员函数display1的实现,dispaly1前加Time::
{
//以hour形式直接访问私有数据成员,实质是this->hour形式
cout<<hour<<":"<<minute<<":"<<sec<<endl;
}
void display2(Time &t) //友元函数dispaly2的实现,不加Time::,友元并不是类的成员
{
//虽然不是类的成员函数,却可以用t.hour的形式直接访问私有数据成员——这就是友元
cout<<t.hour<<":"<<t.minute<<":"<<t.sec<<endl;
}
void display3(Time &t) //display3是一般函数,dispaly3前不加Time::
{
//不能直接访问,只能用公共接口t.getHour()形式访问私有数据成员
cout<<t.getHour()<<":"<<t.getMinute()<<":"<<t.getSec()<<endl;
}
int main()
{
Time t1(10,13,56);
t1.display1(); //成员函数这样调用:对象名.函数名()
display2(t1); //友员函数的调用和一般函数无异(但实现中可以不同)
display3(t1); //一般函数的调用
return 0;
}
心得:
无
C++走向远洋——34(友元函数,成员函数和一般函数的区别)的更多相关文章
- objective-C学习笔记(四)函数成员:方法(函数)
函数分为: 全局函数(C语言函数) 成员函数(OBJC方法):实例方法 “-” 和类方法“+”的区别 //这里要区别静态变量(类变量).全局函数.常量的区别 OBJC里面,所有方法默认为公有方法.没 ...
- C/C++杂记:深入理解数据成员指针、函数成员指针
1. 数据成员指针 对于普通指针变量来说,其值是它所指向的地址,0表示空指针. 而对于数据成员指针变量来说,其值是数据成员所在地址相对于对象起始地址的偏移值,空指针用-1表示.例: 代码示例: str ...
- 【转载】C/C++杂记:深入理解数据成员指针、函数成员指针
原文:C/C++杂记:深入理解数据成员指针.函数成员指针 1. 数据成员指针 对于普通指针变量来说,其值是它所指向的地址,0表示空指针.而对于数据成员指针变量来说,其值是数据成员所在地址相对于对象起始 ...
- C++类成员函数的重载、覆盖和隐藏区别?
C++类成员函数的重载.覆盖和隐藏区别? a.成员函数被重载的特征:(1)相同的范围(在同一个类中):(2)函数名字相同:(3)参数不同:(4)virtual 关键字可有可无.b.覆盖是指派生类函数覆 ...
- C++调用动态库中的虚基类成员函数时总是进错函数
原创文章,转载请注明作者与本文原始URL. 问题描述:最近遇到这样一个问题,在调用C++的一个成员函数时,总是进错函数.在调用 pMsg->GetMsgContent() 的时候,总是进入到 p ...
- C++类成员函数的 重载、覆盖和隐藏区别
重载:成员函数被重载的特征: (1)相同的范围(在同一个类中): (2)函数名字相同: (3)参数不同: (4)virtual 关键字可有可无. #include <iostream> u ...
- C++:类成员函数的重载、覆盖和隐藏区别?
#include <iostream> class A { public: void func() { std::cout << "Hello" <& ...
- Java的初始化执行顺序(父类static变量->子类static变量->父类成员变量->父类构造器->成员变量->构造器->main函数)
1. 引言 了解Java初始化的顺序,有助于理解Java的初始化机制和内存机制. 顺序:父类static变量->子类static变量->父类成员变量->父类构造器->成员变量- ...
- C++ 成员函数赋值给C 的函数指针的采坑录
最近做一个banana Pi M1+的硬解码器封装成类的时候,由于是依赖ffmpeg的,而ffmpeg是C 实现的,本来demo 都是直接用C写的,测试也没有问题,想着封装也不会有问题,至少自己对C+ ...
随机推荐
- 吴裕雄--天生自然 PYTHON3开发学习:循环语句
n = 100 sum = 0 counter = 1 while counter <= n: sum = sum + counter counter += 1 print("1 到 ...
- 让debian8.8不休眠,debian设置不休眠模式,因为我的本本休眠了时间不准确了,得重新同步
第一步:sudo vi /etc/systemd/logind.conf /*最好备份下再修改*/ 把下面的参数改为ignoreHandleLidSwitch=ignore 第二步: sudo ser ...
- Kubernetes系列三:二进制安装Kubernetes环境
安装环境: # 三个节点信息 192.168.31.11 主机名:env11 角色:部署Master节点/Node节点/ETCD节点 192.168.31.12 主机名:env12 角色:部署Node ...
- Python访问Amazon官网异常
使用Python访问亚马逊(Amazon)官网,如果没有将headers更改为浏览器的信息, 有几率会触发:检测到当前可能是自动程序,需要输入验证码: 将header修改成浏览器后,需要等一段时间或者 ...
- Office 365 邮件流
进入Exchange管理中心->点击左侧的“邮件流”->进入邮件流配置页面. 一.规则 规则也称传输规则,对通过组织传递的邮件,根据设定条件进行匹配,并对其进行操作.传输规则与众多电子邮件 ...
- day10-time模块
import time print(time.time()) #时间戳1553070877.0166008 print(time.strftime('%Y-%m-%d %H %M %S')) #201 ...
- Docker系列二: docker常用命令总结
https://docs.docker.com/reference/ 官方命令总结地址 容器生命周期管理 1.docker run 创建一个新的容器并运行一个命令 docker run [optio ...
- 正则表达式grep学习(一)
文本处理三剑客grep 文本过滤sed 流过滤awk 格式处理 正则表达式就是一些特殊字符组成的模式,赋予了他特定的含义 在大多数程序里,正则表达式都被置于两个正斜 ...
- 存储映射I/O函数
1.void * mmap((void *addr, size_t length, int prot, int flags, int fd, off_t offset) 参数: addr:用于指定映 ...
- Office 365管理员设置
一.注册 1.输入网站 http://www.21vbluecloud.com/ ,进入世纪互联蓝云官方网站 2.选择 运营的产品->Office 365 3.选择了解更多 4.浏览根据不同的 ...