this指针的用途

#include<iostream>
using namespace std;
//解决名称冲突//返回对象本身 *this
class Person {
public:int age;Person(int age) {//this指针指向的是被调用的成员函数所属的对象this->age = age;}Person & personAddage(Person &p) {this->age += p.age;return *this;}};
void test01() {Person p1(18);cout << "p1的年龄为:" << p1.age << endl;}void test02() {Person p1(10);Person p2(10);//链式编程思想p2.personAddage(p1).personAddage(p1).personAddage(p1);cout << "p2的年龄为:" << p2.age << endl;
}int main() {//test01();test02();
}

空指针访问成员函数

#include<iostream>
using namespace std;
//空指针可以调用成员函数
class Person {
public:void showClassName() {cout << "this is Person class" << endl;}void showPersonAge() {if (this == NULL)//提高健壮性,为NULL直接返回return;cout << "age = " << m_age << endl;}int m_age;};
void test01() {Person* p = NULL;p->showClassName();//p->showPersonAge();//报错原因传入指针为NULL}
int main() {test01();return 0;
}

const修饰成员函数

#include<iostream>
using namespace std;
//常函数,常对象
class Person {
public://this指针的本质是指针常量 指针指向的是不可以修改的//const Person * const this//在成员函数后面加const,修饰的是this指向,让指针指向的值也不能修改void showPerson() const{m_b = 100;//m_a = 100;//this = NULL//this指针不可以修改指针的指向}void fun() {}int m_a;mutable int m_b;//特殊变量 即使在常函数中 也可以修改 必须加mutable
};void test01() {Person p;p.showPerson();}
void test02() {const Person p;//在对象前加const,变为常对象//p.m_a = 100;p.m_b = 100;//因为加了mutable,所以可以修改p.showPerson();//常对象只能调用常函数//p.fun()//常对象不能调用普通成员函数,普通成员函数可以修改成员变量
}int main() {test02();return 0;
}

全局函数做友元

#include<iostream>
using namespace std;
class Building {//goodGay全局函数是Building的友元,可以访问私有成员friend void goodGay(Building* building);
public:Building() {m_SittingRom = "客厅";m_BedRoom = "卧室";}string m_SittingRom;
private:string m_BedRoom;};
void goodGay(Building *building) {cout << "好基友的全局函数 正在访问" << building->m_SittingRom << endl;cout << "好基友的全局函数 正在访问" << building->m_BedRoom << endl;}
void test01() {Building building;goodGay(&building);
}int main() {test01();
}

类做友元

#include<iostream>
using namespace std;
class Building;
class GoodGay {
public:GoodGay();void visit();//参观函数访问building中的属性Building* building;};
class Building {//GoodGay是本类的友元,可以访问私有成员friend class GoodGay;
public:Building();string m_SittingRoom;
private:string m_BedRoom;};//类外写成员函数
Building::Building() {m_SittingRoom = "客厅";m_BedRoom = "卧室";}GoodGay::GoodGay() {building = new Building;}
void GoodGay::visit() {cout << "好基友正在访问" << building->m_SittingRoom << endl;cout << "好基友正在访问" << building->m_BedRoom << endl;
}
void test01() {GoodGay gg;gg.visit();
}int main() {test01();return 0;
}

C++(四)——类和对象(下)相关推荐

  1. 实验四 类和对象;类的继承和派生;多态性; 接口;构造器应用

    实验四 类和对象:类的继承和派生:多态性: 接口:构造器应用 一.实验目的 1. 掌握类与对象的关系: 2. 掌握类的定义: 3. 掌握对象的声明及使用: 4. 掌握构造方法的概念及调用时机: 5. ...

  2. JAVA类与对象tank_实验四 类与对象

    实验四类与对象 1.实验目的 1.使用类来封装对象的属性和行为: 2.掌握对象的组合以及参数传递: 3.掌握类变量与实例变量,以及类方法与实例方法的区别 2.实验内容 1.参考实验指导书中P17-25 ...

  3. 实验四 类和对象; 类的继承和派生;多态性; 接口;构造器应用

    一.实验目的 1 . 掌握类与对象的关系: 2 . 掌握类的定义: 3 . 掌握对象的声明及使用: 4 . 掌握构造方法的概念及调用时机: 5 . 掌握构造方法的重载: 6 . 掌握匿名对象的使用. ...

  4. Java私塾跟我学系列——JAVA篇 第四章Java类和对象

    教学目标: i面向对象基础 i掌握对象的三大特性 i掌握Java类的构建 i掌握如何使用Java类 i理解引用类型 i理解按值传递和按引用传递 i深入理解变量 i掌握包装类 i理解类型转换 i理解Ja ...

  5. C++类和对象 (下)

    作者:@小萌新 专栏:@C++初阶 作者简介:大二学生 希望能和大家一起进步! 本篇博客目标:梳理类和对象剩下几个零碎的知识点 专注是一种能力 类和对象 本章目标 一. 输入输出流 1.1 流概念 1 ...

  6. C++类与对象(下)

    C++类与对象(下) 文章目录 C++类与对象(下) 前言 一.构造函数的深入 1.初始化列表 2. explicit关键字 二.static成员 三.友元 0.友元 1.友元函数 2.友元类 四.内 ...

  7. c++入门(四)类和对象(中篇)

    文章目录 前言 一. 构造函数 1.1 构造函数概念 1.2 构造函数特性 二. 析构函数 2.1 析构函数概念 2.2 析构函数的特性 三,拷贝构造函数 3.1 拷贝构造函数概念 3.2 拷贝构造函 ...

  8. C++编程入门系列之十四(类与对象:构造函数和析构函数)

    C++编程入门系列之十四(类与对象:构造函数和析构函数) 鸡啄米上一节中给大家讲解了类的声明.成员的访问控制和对象,今天鸡啄米给大家讲C++编程入门时同样必须掌握的构造函数和析构函数.从上一讲开始已经 ...

  9. java中如何把时间封装成类,java-如何在不使用任何不推荐使用的类的情况下将日期从一种格式转换为另一种格式的日期对象?...

    java-如何在不使用任何不推荐使用的类的情况下将日期从一种格式转换为另一种格式的日期对象? 我想将date1格式的日期转换为date2格式的日期对象. SimpleDateFormat simple ...

最新文章

  1. windows怎么更改系统默认编码为utf-8?(避免编译从linux系统弄过来的c文件printf出现乱码问题)(beta版:使用unicode utf-8提供全球语言支持)
  2. Ubuntu 14.04 LTS 下升级 gcc 到 gcc-4.9、gcc-5 版本
  3. Python3之字典生成器结合lambda实现按key/value排序
  4. 初识CPS方法的连续动态建模
  5. SQL Server 2012 下载和安装详细教程
  6. 什么是银行行号,银行联行号有哪些功能?
  7. libaio在mysql中的作用,ubuntu安裝mysql遇到的坑----解決Mysql報錯缺少libaio.so.1
  8. express 验证码功能
  9. android自定义view设置背景颜色,Android View的几种背景颜色设置
  10. win7下搭建外网svn服务器
  11. USB移动硬盘WinPE启动盘的制作方法
  12. HCIA-Intelligent Computing 题目汇总
  13. 化工园区危化品企业安全风险智能化管控平台建设四大目标
  14. 三十二楼层选几层最好_32楼层的选择几层最好 住楼房几层最好风水
  15. STM32 SPI方式读写SD卡
  16. 给未来的儿子的一封信
  17. 蓝桥杯单片机小板100*100简化电路板
  18. 如何写出一份真正让您受聘的出色简历
  19. 输出1-100之间的素数
  20. Candence $shm_open $shm_probe 函数

热门文章

  1. FetchType.LAZY和FetchType.EAGER什么区别?(懒加载和急加载的理解)
  2. apache nginx mysql php_php+Apache2+Nginx+Mysql
  3. linux 运行msi文件是什么意思,查看Msi文件内容
  4. 如何利用传感器控制数据中心能耗
  5. 又一个高等级数据中心着火了!
  6. 图说数据中心新风节能技术
  7. 深度linux win7分区,怎么安装Win7深度操作系统?
  8. zabbix 监控mysql5.7_使用zabbix对mysql5.7主从进行监控
  9. 成功解决\PyInstaller\compat.py, line 378  out = out.decode(encoding) UnicodeDecodeError: utf-8 codec c
  10. DL之ShuffleNet:ShuffleNet算法的架构详解