一、类的大小及类的成员在内存中的存放

类中有成员变量,也有成员函数,成员变量有不同的值,但是成员函数都是相同的,多个类对象重复存储成员函数是没有意义的,所以采用成员变量和成员函数分离的方法,每个对象保存自己的成员变量,但是只保存一份公共的成员函数。

二、this指针

C++编译器给每个“非静态的成员函数“增加了一个隐藏的指针参数,让该指针指向当前对象(函数运行时调用该函数的对象),在函数体中所有成员变量的操作,都是通过该指针去访问。只不过所有的操作对用户是透明的,即用户不需要来传递,编译器自动完成。这是类的成员函数能够被不同的类调用时精确访问的关键。

三、构造和析构函数和拷贝构造函数

构造函数用于初始化一个对象,函数名与类名完全相同,没有任何返回值,就连void也没有,
        析构函数是构造函数的反义词,用于在对象释放内存之前对其成员进行清理,析构函数名为类名之前加上~,同样没有返回值。
        拷贝构造函数也叫做副本构造函数,用于使用对象初始化另一个对象,函数名和类名相同,无返回值,另外,拷贝构造函数的参数为类对象的引用类型,原因是如果为类对象,那么在传参时又会调用拷贝构造函数,也就是他本身,如此会造成死循环递归。
        需要注意的是这三种构造函数都是对对象进行处理,不是说去为对象开辟空间或回收空间,是在对象已经开辟好的情况下处理而已。

四、赋值运算符重载

运算符重载是指针对不同的类设计出不同的运算符运算方法,使用operator关键字进行重载运算符。类默认有赋值运算符的重载函数,如下:

class& operator = (const class& obj)
{......return *this;
}

赋值运算符重载函数返回值为左值的引用是防止有连续赋值的情况,a = b =c被解析为a.operator = (b.operator = (c)),此时如果函数没有返回值,那么a调用函数会报错。

五、常方法

常方法是指在定义方法时在方法标签后加一个const,常方法就是不能修改类成员变量的方法。

int a(int b, int c) const
{......
}

常方法不能修改成员变量其原理还是this指针,const修饰的其实是影藏的this指针,所以没有this指针的方法是不能使用const定义为常方法的。

c++类与对象(一)相关推荐

  1. C++ 笔记(18)— 类和对象(this 指针、指向类的指针、类静态成员变量和函数)

    1. this 指针 在 C++ 中,每一个对象都能通过 this 指针来访问自己的地址. this 指针是所有成员函数的隐含参数.因此,在成员函数内部,它可以用来指向调用对象. 友元函数没有 thi ...

  2. C++ 笔记(16)— 类和对象(类定义、类实例对象定义、访问类成员、类成员函数、类 public/private/protected 成员、类对象引用和指针)

    1. 类的定义 类定义是以关键字 class 开头,后跟类的名称.并在它后面依次包含类名,一组放在 {} 内的成员属性和成员函数,以及结尾的分号. 类声明将类本身及其属性告诉编译器.类声明本身并不能改 ...

  3. C02-程序设计基础提高班(C++)第9周上机任务-类和对象

    第9周:阅读教材第8章(p231-262),主要内容是类和对象,学会定义类和对象解决问题,完成第9周上机任务: (回到C02-程序设计基础提高班(C++)学习安排) 实践任务: [任务1]阅读.运行下 ...

  4. 函数返回类的对象与拷贝构造函数

    C++中,如果我们在一个函数中,定义了一个类的对象,然后返回这个对象,在main函数中用一个对象去接受这个返回的对象的时候,这里面参与的函数调用大家可能不熟悉,这里通过程序和注释的方式给大家讲解一下. ...

  5. ZJU-java进阶笔记 第一、二周(类与对象,对象交互)

    对象变量是对象的管理者,而非所有者 VendingMachine vm = new VendingMachine(); this指代当前对象 成员函数可以直接(不需要点运算符)调用本类的其他成员函数 ...

  6. 3个题目熟悉类和对象基础

    1.按要求编写Java应用程序: (1)编写西游记人物类(XiYouJiRenWu)其中属性有:身高(height),名字(name),武器(weapon)方法有:显示名字(printName),显示 ...

  7. 刻意练习:Python基础 -- Task10. 类与对象

    背景 我们准备利用17天时间,将 "Python基础的刻意练习" 分为如下任务: Task01:变量.运算符与数据类型(1day) Task02:条件与循环(1day) Task0 ...

  8. java中具有继承关系的类及其对象初始化顺序

    先说结论 对于具有继承关系的类,它们的类和对象构造顺序为:父类的类构造器() -> 子类的类构造器() -> 父类成员变量的赋值和实例代码块 -> 父类的构造函数 -> 子类成 ...

  9. python的类和对象_Python类与对象实验

    一.任务描述 本实验任务主要对Python类与对象进行一些基本操作,通过完成本实验任务,要求学生熟练掌握Python类与对象的关系,并对Python类与对象的基本操作进行整理并填写工作任务报告. 二. ...

  10. 简单介绍实体类或对象序列化时,忽略为空属性的操作

    这篇文章主要介绍了实体类或对象序列化时,忽略为空属性的操作,具有很好的参考价值,希望对大家有所帮助.如有错误或未考虑完全的地方,望不吝赐教 第一种,在配置文件配置 在application.xml直接 ...

最新文章

  1. AC日记——中位数 洛谷 P1168
  2. PHP导出pdf文件_dompdf
  3. 简单易懂棒棒哒的视频传输工具!
  4. window.btoa()方法;使字符编码成base64的形式
  5. 机器学习难?那是你没看过这张路线图!
  6. [转载] C语言C++指针与java中引用的一点对此
  7. SPOJ SUBST1 New Distinct Substrings(后缀数组 本质不同子串个数)题解
  8. Android 中进程的级别以及 Service 的优先级
  9. Multisim 版本针对3D元件库说明
  10. 红米note4android,红米Note4深度评测
  11. Django ORM 使用手册
  12. WidsMob Denoise如何使用?WidsMob Denoise图片降噪教程
  13. 经济危机离你并不遥远!
  14. 一文读懂ICO、IFO、IMO、IEO的区别,或许是全网最全科普
  15. comsumer配置
  16. 搜狗输入法的符号大全里面可以输入下标
  17. u盘误删文件怎么恢复
  18. 2019-详细Android Studio开发百度地图(5)—百度地图_导航和TTS语音播报的实现
  19. C语言排列组合(函数
  20. Spring cloud 微服架构(一)

热门文章

  1. mac电脑投屏到小米盒子_iphone投屏到苹果电脑方法——macw站
  2. jzoj 6012.【NOIP2019模拟1.25A组】荷马史诗 dp
  3. C#的HTTP协议中POST与GET的区别
  4. 计算机文化论文5000字,大学生科技论文5000字
  5. SqlServer按半小时分组统计
  6. 在excel中使用offset和match函数进行二维表对二维表的匹配
  7. 记录一次teamview无法远程连接对方teamview的过程
  8. 手动压缩Outlook PST和OST文件
  9. SEVERE: [FATAL] [INS-32038] The operating system group specified for central inventory
  10. 10大免费视频素材网站