常对象: 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++入门篇十三的更多相关文章

  1. spring boot(一):入门篇

    构建微服务:Spring boot 入门篇 什么是spring boot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框 ...

  2. .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划

    作者:依乐祝 原文地址:https://www.cnblogs.com/yilezhu/p/9977862.html 写在前面 千呼万唤始出来,首先,请允许我长吸一口气!真没想到一份来自28岁老程序员 ...

  3. net core体系-web应用程序-4asp.net core2.0 项目实战(CMS)-第一章 入门篇-开篇及总体规划

    .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划   原文地址:https://www.cnblogs.com/yilezhu/p/9977862.html 写在前面 千呼万唤始出来 ...

  4. Python入门篇-文件操作

    Python入门篇-文件操作 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.文件IO常用操作 open:打开 read:读取 write:写入 close:关闭 readlin ...

  5. Membership三步曲之入门篇 - Membership基础示例

    Membership 三步曲之入门篇 - Membership基础示例 Membership三步曲之入门篇 -  Membership基础示例 Membership三步曲之进阶篇 -  深入剖析Pro ...

  6. 1. web前端开发分享-css,js入门篇

    关注前端这么多年,没有大的成就,就入门期间积累了不少技巧与心得,跟大家分享一下,不一定都适合每个人,毕竟人与人的教育背景与成长环境心理活动都有差别,但就别人的心得再结合自己的特点,然后探索适合自己的学 ...

  7. 一个App完成入门篇(七)- 完成发现页面

    第七章是入门篇的倒数第二篇文章了,明天整个APP将进入收官. 本节教程主要要教会大家使用二维码扫描和用do_WebView组件加在html页面. 导入项目 do_WebView组件 扫描功能 自定义事 ...

  8. [原创]Linq to xml增删改查Linq 入门篇:分分钟带你遨游Linq to xml的世界

    本文原始作者博客 http://www.cnblogs.com/toutou Linq 入门篇(一):分分钟带你遨游linq to xml的世界 本文原创来自博客园 请叫我头头哥的博客, 请尊重版权, ...

  9. 转:OSGi 入门篇:模块层

    OSGi 入门篇:模块层 1 什么是模块化 模块层是OSGi框架中最基础的一部分,其中Java的模块化特性在这一层得到了很好的实现.但是这种实现与Java本身现有的一些模块化特性又有明显的不同. 本文 ...

随机推荐

  1. docker 容器的启动方式

    1.Docker 优势: .更高效利用系统资源:由于容器不需要进行硬件虚拟以及运行完整操作系统等额外开销,Docker 对系统资源的利用率更高.无论是应用执行速度.内存损耗或者文件存储速度,都要比传统 ...

  2. vultr测速 看看vultr哪个地区节点速度快

    很多网友用vultr的机子主要就是为了*** 所以对哪个区域节点的速度就非常在意 网上都说这个区域节点速度快,那个区域节点的速度快. 还是得自己亲自测试才知道哪个区域的速度快! 所以做了个ping本机 ...

  3. Vue.js 2.x笔记:安装与起步(1)

    1. 环境准备 Vue是一套用于构建用户界面的渐进式框架,设计为可以自底向上逐层应用.Vue 的核心库只关注视图层. 安装Node.js,下载:https://nodejs.org/ 查看安装: $ ...

  4. LODOP获取打印成功,是否加入队列

    之前博文介绍过获取打印机状态码 LODOP获取打印机状态码和状态码含义测试,但是打印机种类千差万别,状态码不一定准确,特别是打印成功的状态码,获取任务不在队列,可以判断打印成功,删除任务也是任务不在队 ...

  5. docker容器的安装与使用

    docker 容器概念 1.什么是容器 容器就是在隔离环境运行的一个进程,如果进程停止,容器就会销毁.隔离的环境拥有自己的系统文件,IP地址,主机名等. kvm虚拟机,linux,系统文件 程序: 代 ...

  6. 【CF1063D】Candies for Children 数学

    题目大意 有 \(n\) 个人排成一个圈,你有 \(k\) 颗糖,你要从第 \(l\) 个人开始发糖,直到第 \(r\) 个人拿走最后一颗糖.注意这 \(n\) 个人拍成了一个圈,所以第 \(n\) ...

  7. EXCEL计算根据当前时间和身份证号计算准确年龄

    假设身份证号在A2单元格 =IF(MONTH(NOW())<MONTH(DATE(MID(A2,7,4),MID(A2,11,2),MID(A2,13,2))),INT(YEAR(NOW())- ...

  8. Mac anaconda安装 “conda command not found” 解决方法

    官网下载包直接安装的时候可能会产生这种问题,这主要还是环境变量配置的问题 一般我们添加环境变量的方法是编辑.bash_profile或.bashrc,在文件里插入下面这段代码 export PATH= ...

  9. Java基础 -- 字符串(格式化输出、正则表达式)

    一 字符串 1.不可变String String对象是不可变的,查看JDK文档你就会发现,String类中每一个看起来会修改String值的方法,实际上都是创建一个全新的String对象,以包含修改后 ...

  10. ASP.NET MVC 企业级实战

    1.泛型 public class List<T>{ } 当定义泛型类的实例时,必须指定这个实例所存储的实际类型,泛型允许程序员将一个实际的数据类型规约延迟至泛型的实例被创建时才确定,泛型 ...