C++入门篇十三
常对象: const Person p1;
不可以调用普通成员函数,除非前面加了函数前面加了const
可以调用常函数
在对象之前加入const修饰 const Person p1;
常函数:void func() const{}
void func() const {} 修饰的是this指针 const Type * const this
不能修改this指针指向的值,age本质上就是this->age,所以不能修改
// 对象.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
// #include "pch.h"
#include <iostream>
using namespace std; //常函数和常对象
class Person {
public:
Person() {
//构造中修改属性
//当前对象做的值操作 } //普通成员函数
void show() { }
//常函数
void showinfo() const {//加了const是不允许修改的
//常函数不允许修改
//this->m_A = 32;
this->m_B = ;//这个是可以修改的,下面是加了mutable
cout << "m_a:" << this->m_A << "m_b" << this->m_B << endl;
}
//这个是不可以常函数const修改的,this->m_A
int m_A;
//这个是常函数可以修改的
mutable int m_B;//就算是常函数,还是可以执意修改的,mutable }; void test01() {
Person p1;
p1.showinfo();
p1.m_A = ; //如果是常对象的话,不允许修改属性,但是读是可以的
const Person p2;
//p2.m_A = 434;//读是可以的,写是不可以的
p2.showinfo();//showinfo是常函数,但是show是普通成员函数
} int main() { test01();
}
友元函数:friend,可以设置是可以访问私有权限的,谁是不可以访问私有权限的
#include "pch.h"
#include <iostream>
using namespace std;
#include<string> class Building {
friend void You(Building *building);//把下面的函数声明加进来,在加上一个关键字friend就是友元函数
public:
Building(){
//默认构造
this->centerroom = "客厅";
this->bedroom = "卧室";
} public:
string centerroom;
private:
string bedroom; }; void You(Building *building) {//传过来的是地址,Building *building=&实例对象
cout << "好友访问" << building->bedroom << endl;
cout << "好友访问" << building->centerroom << endl; }; void test01() {
Building *p1 = new Building;
You(p1);//传了一个地址过去
} int main() {
test01(); }
友元类注意:
友元关系不能被继承
友元关系是单向的,类A是类B的朋友,但是类B不一定是类A的朋友
友元关系不具有传递性,类B是类A的朋友,类C是类B的朋友 ,但是类c不一样的是类A的朋友
如果一个类被声明为friend,意味者它不是这个类的成员函数,却可以修改这个类的私有成员,而且必须在类的定义中
而且他是一个特权函数
C++并不是一个完全的面向对象的语言,而是一个混合产品
让整个类做元类,friend class 类名
友元函数(类):friend class 类名字
#include <iostream>
using namespace std;
#include <string> //分文件编写,声明和实现 //友元函数 class Room {
friend class You;
public:
Room() {
this->BedRoom = "卧室";
(*this).CenterRoom = "客厅";
} public:
string CenterRoom;
private:
string BedRoom; }; class You {
public:
//默认会执行有参构造函数
You(Room *p) {
cout << "好友来访问" << p->CenterRoom << endl;
cout << "好友来访问" << (*p).BedRoom << endl;
}
}; void test01() {
Room *p = new Room;//创建一个指针实例对象
You y(p);//有参构造函数
}
int main() {
test01(); }
C++入门篇十三的更多相关文章
- spring boot(一):入门篇
构建微服务:Spring boot 入门篇 什么是spring boot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框 ...
- .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
作者:依乐祝 原文地址:https://www.cnblogs.com/yilezhu/p/9977862.html 写在前面 千呼万唤始出来,首先,请允许我长吸一口气!真没想到一份来自28岁老程序员 ...
- net core体系-web应用程序-4asp.net core2.0 项目实战(CMS)-第一章 入门篇-开篇及总体规划
.NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划 原文地址:https://www.cnblogs.com/yilezhu/p/9977862.html 写在前面 千呼万唤始出来 ...
- Python入门篇-文件操作
Python入门篇-文件操作 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.文件IO常用操作 open:打开 read:读取 write:写入 close:关闭 readlin ...
- Membership三步曲之入门篇 - Membership基础示例
Membership 三步曲之入门篇 - Membership基础示例 Membership三步曲之入门篇 - Membership基础示例 Membership三步曲之进阶篇 - 深入剖析Pro ...
- 1. web前端开发分享-css,js入门篇
关注前端这么多年,没有大的成就,就入门期间积累了不少技巧与心得,跟大家分享一下,不一定都适合每个人,毕竟人与人的教育背景与成长环境心理活动都有差别,但就别人的心得再结合自己的特点,然后探索适合自己的学 ...
- 一个App完成入门篇(七)- 完成发现页面
第七章是入门篇的倒数第二篇文章了,明天整个APP将进入收官. 本节教程主要要教会大家使用二维码扫描和用do_WebView组件加在html页面. 导入项目 do_WebView组件 扫描功能 自定义事 ...
- [原创]Linq to xml增删改查Linq 入门篇:分分钟带你遨游Linq to xml的世界
本文原始作者博客 http://www.cnblogs.com/toutou Linq 入门篇(一):分分钟带你遨游linq to xml的世界 本文原创来自博客园 请叫我头头哥的博客, 请尊重版权, ...
- 转:OSGi 入门篇:模块层
OSGi 入门篇:模块层 1 什么是模块化 模块层是OSGi框架中最基础的一部分,其中Java的模块化特性在这一层得到了很好的实现.但是这种实现与Java本身现有的一些模块化特性又有明显的不同. 本文 ...
随机推荐
- jexus独立版设置支持https
先用命令找到libssl.so find / -name libssl.so.* 执行完命令之后找到libssl.so.x.x.x如(libssl.so.1.0.0) 再到jexus/runtime/ ...
- CentOS系统版本的查看方法
CentOS系统版本的查看方法 查看操作系统版本 1 [root@aliyun ~]# lsb_release -a LSB Version: :core-4.1-amd64:core-4.1-noa ...
- mysql 不同索引的区别和适用情况总结
最近在做sql优化,看到一篇有关sql索引不错的文章,转载一下. 一.索引类型 普通索引:INDEX 允许出现相同的索引内容 (normal) 唯一索引:UNIQUE 不可以出现相同的值,可以有NUL ...
- Java中newInstance()和new()区别
前言: 最近在看springIOC和AOP是看见代码中很实用newInstance来实例化一个对象,之前对newInstance和new实例化对象的区别很模糊,特意在这里记录一下 一.newInsta ...
- web services + soap + wsdl 学习
什么是web services? 应用程序组件: 使用开放协议进行通信: 独立(self - contained )并可自我描述: 可通过使用UDDI来发现: 可被其他应用程序使用: XML是Web ...
- idea 转载
转载:https://blog.csdn.net/qq_34033853/article/details/77448431 摘要:在创建类时,自动生成代码的注释模板 本篇内容为大家提供的是Intell ...
- Go语言中的Package问题
问题一.Go使用Package组织源码的好处是什么? 1.任何源码属于一个包 2.用包组织便于代码的易读和复用 问题二.Go语言中Package的种类 Go语言中存在两种包.一种是可执行程序的包.一种 ...
- docker 镜像备份magento 2.2.3
打包百度网盘: 链接:https://pan.baidu.com/s/1i_lSLt48RlxPonVA7qG5kg 密码:h1de 还原:docker load < (filename).t ...
- 第一模块:Python基础(二)
目录 1.变量 常量 2.用户交互和注释 程序交互 注释 字符串 布尔型(bool) 格式化输出 运算符 while 循环 @(开发基础) 1.变量 变量用于存储要在计算机程序中引用和操作的信息.它们 ...
- Python 防止mysql 注入的两种方式
Python防止sql注入一般有两种方法 1.escape_string MySQLdb.escape_string(param) 注意:如果报错出现 'ascii' codec can't en ...