C++ 构造函数和析构函数
编译器会默认的添加构造函数和析构函数操作
系统默认会提供默认构造,拷贝构造,析构函数
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;class Person
{public://构造和析构函数必须写在public下才能调用//构造函数,与类名相同,没有返回值 ,不写void,可以重载//构造函数由编译器自动调用,而不是手动,而且只会调用一次Person()//系统会默认写一个Person(){}的没有内容的无参构造{cout << "构造函数" << endl;}Person(int a)//如果有参函数,则系统不会再提供默认构造函数{cout << "构造函数(int a)" << endl;}//拷贝构造函数,系统默认会提供.如果手动了拷贝构造函数,则系统不会再提供无参和有参构造函数Person(const Person& p)//const的作用是不能修改传入的对象的值,&是引用,如果没有则是不停的开辟新对象,{Age = p.Age;cout << "拷贝构造函数调用" << endl;}// 析构函数,与类名相同,类名前面加一个符号 “~”,无返回值 ,不写void,无参//自动调用,只会调用一次~Person()//系统会默认写一个~Person(){}的没有内容的无参析构{cout << "析构函数" << endl;}int Age;
};void test()
{Person p1(1); //当创建实例时调用构造函数,当函数结束,实例消失时调用析构函数
}void test()
{//隐式调用//Person p1(1); //有参调用//p1.m_Age = 10;//Person p2(p1); //有参拷贝调用//Person p3; //无参调用不要加() Person p3(); //编译器认为这行是函数的声明//显式法调用//Person p4 = Person(100);//右边的是匿名对象//Person p5 = Person(p4);//Person(100); //匿名对象编译器会自动释放//不能用拷贝构造函数 初始化匿名对象//Person p6 = Person(p5); //如果只写右边的部分,编译器认为你写成 Person p5Person p7 = 100; //相当于调用了 Person p7 = Person(100) ,隐式类型转换Person p8 = p7; // 相当于 Person p8 = Person(p7);int main(){test();system("pause");return EXIT_SUCCESS;
}
用列表语法初始化构造函数
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;class Person
{public://无参构造初始化,输入默认值Person() :m_A(10), m_B(20), m_C(30){}// 构造函数后面 + : 属性(参数), 属性(参数)...Person(int a, int b, int c) : m_A(a), m_B(b), m_C(c){}int m_A;int m_B;int m_C;
};
void test()
{Person p1(10, 20, 30);cout << "p1的m_A :" << p1.m_A << endl;cout << "p1的m_B :" << p1.m_B << endl;cout << "p1的m_C :" << p1.m_C << endl;Person p2;cout << "p2的m_A :" << p2.m_A << endl;cout << "p2的m_B :" << p2.m_B << endl;cout << "p2的m_C :" << p2.m_C << endl;}int main() {test();system("pause");return EXIT_SUCCESS;
}
当类对象作为类的成员时候,构造顺序是先构造类对象的构造,然后构造自己,析构顺序与构造相反
explicit
关键字用来防止隐式转换
Person p7 = 100; //相当于调用了 Person p7 = Person(100) ,隐式类型转换
C++ 构造函数和析构函数相关推荐
- C++ 笔记(17)— 类和对象(构造函数、析构函数、拷贝构造函数)
1. 构造函数 构造函数是一种特殊的函数(方法),在根据类创建对象时被调用.构造函数是一种随着对象创建而自动被调用的函数,它的主要用途是为对象作初始化. 构造函数的名称与类的名称是完全相同的,并且不会 ...
- php构造和析构方法,php5构造函数与析构函数实例
自php5起,有了构造函数与析构函数. 这使得php更富有面向对象的魅力了. 在php4时,构造函数用的是与类同名的函数来进行构造这个动作. 例如: 复制代码 代码示例: /* * myclass.p ...
- 提高C++性能的编程技术笔记:构造函数和析构函数+测试代码
对象的创建和销毁往往会造成性能的损失.在继承层次中,对象的创建将引起其先辈的创建.对象的销毁也是如此.其次,对象相关的开销与对象本身的派生链的长度和复杂性相关.所创建的对象(以及其后销毁的对象)的数量 ...
- c++, 派生类的构造函数和析构函数 , [ 以及operator=不能被继承 or Not的探讨]
说明:文章中关于operator=实现的示例,从语法上是对的,但逻辑和习惯上都是错误的. 参见另一篇专门探究operator=的文章:<c++,operator=>http://www.c ...
- C++中的构造函数VS析构函数
1.构造函数 类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行.构造函数的名称与类的名称的完全相同的,并且不会返回任何数据类型,也不会返回void.构造函数用于为某些成员变量设置初 ...
- 多继承的构造函数和析构函数
//程序2:多继承的构造函数 与 析构函数 #include<iostream> using namespace std;class A { public: A() { cout<& ...
- c++ 构造函数析构函数 数据安全_C++知识点 16:构造函数和析构函数的语法
#define _CRT_SECURE_NO_WARNINGS #include using namespace std;// 创建一个类( 类内包括: 2个构造函数,一个析构函数) class Pe ...
- 多重继承的构造函数和析构函数
多重继承的构造函数和析构函数的执行顺序: //此处不做注释和说明了,看程序能读懂的 #include <iostream> using namespace std; class base1 ...
- C++中构造函数和析构函数
[注]致力于将知识讲明白!不懂请留言! 构造函数 定义 它是一种特殊的方法.主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中. 另外,一个类可以有 ...
- c++ map 析构函数_C++学习刷题6--C++类的使用:构造函数、析构函数和类的使用
一.前言 本部分为C++语言刷题系列中的第4节,主要讲解这几个知识点:构造函数.析构函数和类的使用.欢迎大家提出意见.指出错误或提供更好的题目! 二.知识点讲解 由以前知识可知,类的实现中包含成员变量 ...
最新文章
- LTE SIB1时频资源
- 封闭不能外出怎么办?阳台派对了解下!
- 破解世界性技术难题! GTS让分布式事务简单高效
- Spring Framework Reference Documentation手册官网下载地址
- 推荐几个Linux命令行下性能监控小工具
- Eclipse安装从dao层直接到mapper层的插件
- FreeSql与SqlSugar性能测试对比
- WINDOW下,node.js的安装
- StringUtils工具类说明
- 列表推导式三种模式和生成器
- 大数据_MapperReduce_协处理器_类似Mysql的触发器---Hbase工作笔记0024
- Script的加载方法小结
- 如何基于列值从DataFrame中选择行?
- gstreamer向appsrc发送数据的代码
- LaTeX实战经验:如何插入程序代码
- 基于单片机的功放protues_基于单片机的音乐播放器设计
- 微信小程序-服务通知的订阅与下发(基于云调用)
- 信息系统项目管理师考试大纲(第2版)
- MySQL 排序 输出序号
- 在苹果Mac上怎样更改AirDrop名称?
热门文章
- linux c 程序崩溃日志,C:Linux:调用write()时TCP / IP程序崩溃
- Python+turtle绘制虚线同心圆
- Python监视电子邮箱并提示收到新邮件
- Python中一定要注意的那些“坑”(三)
- Python可以这样学(第一季:Python内功修炼)-董付国-专题视频课程
- 设计模式 C++简单工厂模式
- 2020各大网站rss订阅源地址_2020-20-18——DJANGO复习
- java 页面传值_java-jsp springmvc-controller 传值到页面的方法
- python界面编程 plc_在python gui编程怎么运行
- C语言之文件读写探究(三):fputs、fgets、feof(一次读写一行字符(文本操作))