// 构造函数赋值

CTyre(int r, int w):radius(r), width(w) { }

初始化列表

#include<iostream>
using namespace std;
/*成员对象和封闭类
成员对象: 一个类的成员变量是另一个类的对象
包含 成员对象 的类叫 封闭类 (Enclosing)
*/
class CTyre
{
private:int radius;int width;
public:CTyre(int r, int w) :radius(r), width(w) {} //初始化列表
};class CEngine
{};class CCar
{
private:int price;CTyre tyre;CEngine engine;
public:CCar(int p, int tr, int tw);
};CCar::CCar(int p, int tr, int w) :price(p), tyre(tr, w) {}int main()
{CCar car(20000, 17, 225);return 0;
}

View Code

友元

#include<iostream>class CCar; //提前声明 CCar类, 以便后面CDriver类使用
class CDriver
{
public:void ModifyCar(CCar * pCar); //改装汽车

};class CCar
{
private:int price;friend int MostExpensiveCar(CCar cars[], int total); //声明友元friend void CDriver::ModifyCar(CCar* pCar); //声明友元
};void CDriver::ModifyCar(CCar *pCar)
{pCar->price += 1000; //汽车改装后价值增加

}int MostExpensiveCar(CCar cars[], int total) //求最贵汽车的价格
{int tmpMax = -1;for (int i = 0; i < total; ++i)if (cars[i].price > tmpMax)tmpMax = cars[i].price;return tmpMax;
}
int main()
{return 0;
}

View Code

Note:
友元类之间的关系
不能传递, 不能继承

A 是 B的友元,B 是 C的友元, 不能推出A与C的友元关系。

this指针

C语言的结构体不能定义成员函数!!!

C++可以

常量成员函数
在类的成员函数说明后面可以加const关键字,则该成员函数成为常量成员函数。
常量成员函数执行期间不应修改其所作用的对象。因此,在常量成员函数中不能修改成员变量的值(静态成员变量除外),也不能调用同类的非常量成员函数(静态成员函数除外)

常量成员函数的重载

两个成员函数,名字和参数表都一样,但是一个是const,一个不是,算重载。

#include<iostream>
using namespace std;class CTest
{
private:int n;
public:CTest() { n = 1; } // constructor functionint GetValue() const { return n; }int GetValue() { return 2 * n; }
};int main()
{const CTest objTest1;CTest objTest2;cout << objTest1.GetValue() << "," << objTest2.GetValue();while (1);{}
}

View Code

常引用

引用前面可以加const关键字,成为常引用。
不能通过常引用,修改其引用的变量

可以用对象的常引用作为参数,如:
class Sample {

};
void PrintfObj( const Sample & o)
{
……
}
这样函数中就能确保不会出现无意中更改o值的语句了。

复制构造函数起作用的三种情况

1. 当用一个对象去初始化同类的另一个对象时。
Complex c2(c1);
Complex c2;  //初始化语句,非赋值语句

2. 如果某函数有一个参数是类 A 的对象,
那么该函数被调用时,类A的复制构造函数将被调用

3. 如果函数的返回值是类A的对象时,则函数返回时,
A的复制构造函数被调用:

转载于:https://www.cnblogs.com/focus-z/p/10992077.html

《C++程序设计POJ》《WEEK3 类和对象进阶》成员对象和封闭类/友元/this指针/常量成员函数...相关推荐

  1. 程序设计与算法三~C++面向对象程序设计~北大郭炜MOOC学习笔记~第三章:类和对象进阶(新标准C++程序设计)

    以下内容为笔者手打,望读者珍惜,如有转载还请注明. chapter 3:类和对象进阶 $3.1构造函数 $3.1.1 构造函数的概念和作用     全局变量在程序装入内存时就已经分配好了存储空间,程序 ...

  2. java组合类,对象组合,定义一个点类,将圆的圆心用点类的对象表示,则圆类定义为一个组合类,仍然能计算圆的面积和周长,并能对圆进行移动。

    对象组合的概念 如果一个对象中的域是其他类的对象,则称这个对象是组合对象,组合对象所在的类是组合类.例如计算机是由其他部件(对象)组成的.通过组合的方式,可以简化对象的创建过程,提高对象的创建效率.从 ...

  3. C++ 类和对象(一):类的概念、类的访问控制和封装、类对象模型、this指针

    类的概念 类的访问控制和封装 类的对象模型 this指针 类的概念 在C++中,类可以说是最重要的东西,因为C++一开始的定位就是c with class,也正是因为引入了类,才让c++从c的面向过程 ...

  4. Python的类和对象的介绍,定义类和对象,定义实例方法和属性以及Python中的魔法方法

    Day09新手小白学python 第九节 Python的类和对象的介绍,定义类和对象,定义实例方法和属性以及Python中的魔法方法 目录 Day09新手小白学python 前言 一.面向对象介绍 二 ...

  5. 【Java 19】反射 - 反射机制概述、获取Class实例、类的加载与ClassLoader的理解、创建运行时类的对象、获取运行时类的完整结构、调用运行时类的指定结构、动态代理

    反射机制概述.获取Class实例.类的加载与ClassLoader的理解.创建运行时类的对象.获取运行时类的完整结构.调用运行时类的指定结构.动态代理 反射 1 Java反射机制概述 1.1 Java ...

  6. 类的成员函数指针和静态成员函数指针 调用成员函数***

    C++提供static这个关键词对静态成员进行声明,静态成员函数和类的实例化无关,对于同一类来说,静态成员函数是所有类的对象共享的.而普通成员函数需要实例化才能调用,对于每一个实例来说,普通成员函数是 ...

  7. 编写计算正方体、圆柱体、球体的表面积和体积的类。要求: (1)这三个类有一个公共的基类; (2)这三个类计算正方体、圆柱体、球体的表面积和体积的成员函数名字相同; (3)按照运行时的多态性方法设计一个

    本文为博主原创文章,未经博主允许不得转载. 版权为陈博超所有,第一次于2020年11月24日发表于BLOG上 本BLOG上原创文章未经本人许可,不得用于商业用途.转载请经允许后注明出处,否则保留追究法 ...

  8. python类和对象介绍_python中的类,对象,方法,属性等介绍

    注:这篇文章写得很好.加底纹的是我自己的理解 python中一切皆为对象,所谓对象:我自己就是一个对象,我玩的电脑就是对象,坐着的椅子就是对象,家里养的小狗也是一个对象...... 我们通过描述属性( ...

  9. java 类及对象的课后作业_JAVA类和对象课后作业

    1.使用类的静态字段和构造函数,我们可以跟踪某个类所创建对象的个数.请写一个类,在任何时候都可以向它查询"你已经创建了多少个对象?" 代码: //显示类 //YiMingLai 2 ...

  10. Kotlin学习笔记 第二章 类与对象 第七节 数据类

    参考链接 Kotlin官方文档 https://kotlinlang.org/docs/home.html 中文网站 https://www.kotlincn.net/docs/reference/p ...

最新文章

  1. 【数字图像处理】三.MFC实现图像灰度、采样和量化功能详解
  2. Bootstrap3 价格滑动块 price range bootstrap-slider
  3. Java中注解学习系列教程-2
  4. 面向对象进阶4:软件开发规范
  5. Vagrant常见问题汇总
  6. Oracle rac误删归档,rac 归档的存放路径下的不同的恢复方法
  7. 推荐一个 Java 实体映射工具 MapStruct 1
  8. Lync Server 2010下载拓扑报错分析及解决方法分享
  9. Python每日一记129列表换行
  10. 经济适用型北京生活经验分享,80后北漂看过来
  11. 什么是OneData?阿里数据中台实施方法论解读
  12. 电脑的Mac地址怎么查看
  13. 风控小白必看!主流风控模型解析
  14. 粥佐罗时间管理课学习笔记
  15. 一对多GRE隧道配置
  16. linux NUMA技术
  17. 【C语言程序设计】从键盘上输入某年某月(包括闰年),编程输出该年的该月拥有的天数。
  18. 使用高防CDN有什么用处?
  19. 笔记: 计算天区面积的方法
  20. 1013: 求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积

热门文章

  1. pygame放大图片_使用Pygame进行游戏开发(3)--绘图
  2. python如何将数据生成excel_Python如何将数据导出excel的技巧分享
  3. [CF592D]Super M
  4. PreparedStatement批量处理和事务
  5. 6月27日 OGDF不同的布局算法
  6. 那些唱衰智能电视的砖家们可以闭嘴了
  7. (面试)涉及到继承和类加载
  8. WCF 4.0一个鲜为人知的改变[兼书名征集]
  9. c# 读取写入excel单元格(包括对excel的一些基本操作)
  10. 十八、x86汇编基础