1.  拷贝构造函数 //并没有搞懂 先存着吧  遇到实际情况再回来看看

拷贝构造函数在以下三种情况被调用:
(1)当用一个已经初始化过的对象去初始化同类另一个对象时,
拷贝构造函数被调用。
Sample S2(S1);
Sample S2 = S1;
(2)如果某函数有一个参数是类 A 的对象,那么该函数被调用
时,类A的拷贝构造函数将被调用
void f( A a )
{
a.x = 1;
};
A aObj;
f ( aObj) ;
// 导致A的拷贝构造函数被调用,生成形参传入函数
71(3)如果函数的返回值是类A的对象时,则函数返回时,A的拷
贝构造函数被 调用
A f( )
{
A a;
return a; // 此时A的拷贝构造函数被调用,即调用A(a);
}
int main( )
{
A b;
b = f();
return 0;
}
 
 
2.析构函数不能带任何参数,也没有返回值(void类型也不行)。一个类最多只能有一个析构函数,不能重载。
 
 
3.构造函数和析构函数的调用顺序
(1)对于全局定义的对象(在函数体外定义的对象)   class完以后马上接对象
在程序开始执行时(包括main()函数在内的所有函数执行之前)调用构造函数,到程序结束或调用exit()函数终止程序时才调用析构函数。
 
(2)对于局部定义的对象(在函数内定义的对象) 在main函数里一个一个定义对象
在程序执行到定义对象的地方时调用构造函数,到函数结束时才调用析构函数。
 
(3)用static定义的局部对象
在首次到达对象定义位置时调用构造函数,在程序结束时调用析构函数。
 
(4)对于用new运算符动态生成的对象
在产生对象时调用构造函数,只有用delete释放对象时,才调用析构函数。若不使用delete运算符来撤销动态生成的对象,则析构函数不会被调用。
 
 
 
4.静态成员
静态数据成员
 
(1)不管一个类的对象有多少个,其每个静态数据成员都只有一个,由这些对象所共享,可被任何一个对象所访问。如果该类的某个对象修改了静态数据成员的值,那么,其他所有同类的对象都将共享被修改后的数值。
 
(2)在一个类的对象空间内,不包含静态成员的空间,所以静态成员所在空间不会随着对象的产生而分配,或随着对象的消失而回收。
 
(3)静态数据成员存储空间的分配是在程序一开始运行时就被分配的,并不是在程序运行过程中在某一函数内分配空间和初始化。
 
(4)静态数据成员的初始化语句,既不属于任何类,也不属于包括主函数在内的任何函数,静态数据成员初始化语句应当写在程序的全局区域中,并且必须指明其数据类型与所属的类名。
 
(5)如果未对静态数据成员赋初值,则编译系统会自动赋予初值0。
 
静态成员函数
(1)出现在类体外的静态成员函数定义不能指定关键字static。
 
(2)静态成员函数之间可以相互访问,包括静态成员函数访问静态数据成员和访问静态成员函数。
 
(3)非静态成员函数可以任意地访问静态成员函数和静态数据成员。
 
(4)静态成员函数不能直接访问非静态成员函数和非静态数据成员。
 
 

c++复习——类(1)的更多相关文章

  1. C++复习:类和对象

    类和对象 基本概念 1)类.对象.成员变量.成员函数 2)面向对象三大概念 封装.继承.多态 3)编程实践     类的定义和对象的定义,对象的使用     求圆形的面积     定义Teacher类 ...

  2. Swift4.0复习类

    1.类的属性: 2.类的方法: 3.类作为引用类型: “Swift新增了一对操作符 === 与 !== 用于判定同一个类的两个对象引用是否指向同一对象实例.” 摘录来自: “大话Swift 4.0”. ...

  3. c++复习——类(2)

    1.this指针 this指针是一个指向对象的指针.  this指针是一个隐含于成员函数中的对象指针.  this指针是一个指向正在调用成员函数的对象的指针.  类的静态成员函数没有this指针 ...

  4. java面向对象复习之一

    目的: 复习如何实现代码的逻辑思路: 复习类的封装: 复习类和对象的创建使用和封装: 练习: 实现功能:人到超市买东西 抽出三个类: 人 超市 东西: 功能点: 买: 它们之间的联系:东西包含于超市 ...

  5. Java类的继承与多态特性-入门笔记

    相信对于继承和多态的概念性我就不在怎么解释啦!不管你是.Net还是Java面向对象编程都是比不缺少一堂课~~Net如此Java亦也有同样的思想成分包含其中. 继承,多态,封装是Java面向对象的3大特 ...

  6. PyQt5(1)——Qt Designer初探

    相关环境配置我们就不介绍了(网上有很多教程) Qt Designer 是一款十分强大的GUI工具,生成的文件为 .UI文件  可以通过命令转化为Py文件,简单来说我们可以通过拖拽方式生成界面,在通过简 ...

  7. 2019全国大学生信息安全竞赛ciscn-writeup(4web)

    web1-JustSoso php伪协议获取源码 ?file=php://filter/read=convert.base64-encode/resource=index.php index.php ...

  8. 20200117 .net 001

    第一部分:面向对象 封装 继承(里氏转换) 多态第二部分:值类型.引用类型.字符串操作第三部分:集合文件操作第四部分:正则表达式第五部分:XML操作第六部分:委托.事件第七部分:反射. 1.变量的命名 ...

  9. .Net 笔记

    1.介绍 .net一般指.Net Framework框架.一种平台,一种技术. C#是一种编程语言,可以开发基于.net平台的应用. .Net Framework是框架是.Net平台不可缺少的一部分, ...

随机推荐

  1. Django-DRF组件学习-视图学习

    1.请求与响应 drf除了在数据序列化部分简写代码以外,还在视图中提供了简写操作.所以在django原有的django.views.View类基础上,drf封装了多个子类出来提供给我们使用. Djan ...

  2. 应用安全 - 工具 | 平台 - Weblogic - 漏洞 - 汇总

    控制台路径 | 弱口令  前置条件 /console CVE-2016-0638  Date 类型远程代码执行 影响范围10.3.6, 12.1.2, 12.1.3, 12.2.1  CVE-2016 ...

  3. 2.proxychains----Macchanger----anonsurf

    nano /etc/proxychains.conf 激活dynamic_chain 同是启用proxy_dns 只启用IP会泄露DNS位置信息,别人就知道你在用匿名 ipconfig    ifco ...

  4. 【计算机视觉】HDR之tone mapping简介

    tone Mapping原是摄影学中的一个术语,因为打印相片所能表现的亮度范围不足以表现现实世界中的亮度域,而如果简单的将真实世界的整个亮度域线性压缩到照片所能表现的亮度域内,则会在明暗两端同时丢失很 ...

  5. JavaSE_Java跨平台原理

    Java语言的核心优势就是跨平台. C/C++语言都是直接编译成针对特定平台的机器码,如果要跨平台,需要借用相应的编译器重新编译.Java源程序(.java)要先编译成与平台无关的字节码文件(.cla ...

  6. 指定pom文件jdk版本

    <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> ...

  7. linux修改用户最大线程数

    linux下普通用户最大允许使用线程数为1024: 但是并发量大时,该1024配置项远远不够满足我们的需要,我们可以修改/etc/security/limits.d/90-nproc.conf配置设置 ...

  8. 关于Java多线程的一些面试问题

    1.ArrayList和Vecoter区别? Array和ArrayList的异同点一.Array和ArrayList的区别#1. Array类型的变量在声明的同时必须进行实例化(至少得初始化数组的大 ...

  9. JS封装插件:实现文件读写功能

    scripting.FileSystemObject是一个可以实现文件读写的COM组件,由于COM组件可以被跨语言调用,因此可以选择像vbs或者JS这种脚本语言调用,下面我就使用该COM组件封装了一个 ...

  10. 通过编写串口助手工具学习MFC过程——(一)工程新建

    通过编写串口助手工具学习MFC过程 因为以前也做过几次MFC的编程,每次都是项目完成时,MFC基本操作清楚了,但是过好长时间不再接触MFC的项目,再次做MFC的项目时,又要从头开始熟悉.这次通过做一个 ...