构造函数定义:构造函数c++中在创建对象时自动调用,用来初始化对象的特殊函数。

(1)构造函数的名字必须与类的名字相同,不能有返回值,哪怕是void 也不行。

(2)通常情况下构造函数应声明为公有函数,否则它不能像其他成员函数那样被显式地调用 构造函数被声明为私有有特殊的用途,这个以后再写。

(3)但是可以有参数,因为有参数,故可以被重载。

 #ifndef TEST_H
#define TEST_H
class Test{
int m_i;
public:
Test(int i=);
Test(int i,char c);//构造函数被重载
void fun();
void fun(int i=);//普通函数被重载,不过这种重载会有问题,当在函数中以fun()这种形式调用fun函数时,连接器就不知道链接哪一个具体的fun了。 };
#endif //TEST_H

(4)不带参数的构造函数 或者所有的参数都有默认值的构造函数,成为默认构造函数,默认构造函数只能有一个,如果默认构造函数既包含不带参数的,也包含所有参数都有默认值的,那么编译器就会报错。

 #ifndef TEST_H
#define TEST_H
class Test{
int m_i;
public:
Test(int i=);
Test();//类中有两个默认构造函数 };
#endif //TEST_H

(5)如果程序中未声明任何构造函数,则系统自动产生出一个默认构造函数,但是只要程序员自己生命了一个构造函数,编译器就不会再生产默认构造函数。

(6)构造函数和delete:可以在堆中用new operator 分配一个对象的空间,这种分配的对象空间要由程序员自己释放,用delete,在new时调用constructor 在delete时调用destructor。

 #ifndef TEST_H
#define TEST_H
class Test{
int m_i;
public:
Test(int i = ){};
Test(int i, char c){}; };
#endif //TEST_H int main(){ Test* tp = new Test();//调用constructor
delete tp;//调用destructor
return ;
}

(7)一般的局部类对象的初始化顺序,即构造函数被调用的顺序,一般语气定义的顺序一样,释放的顺序,即析构函数被调用的顺序,一般与构造函数调用的顺序相反。

(8)全局对象的构造函数在主函数main之前被调用,在main函数结束时,析构函数被调用

(9)构造函数和数组

#ifndef TEST_H
#define TEST_H
class Test{
int m_i;
public:
Test(int i = ){}
Test(int i, char c){}
~Test(){} };
#endif //TEST_H int main(){ Test* tp=Test[];//创建一个Test对象的数组,被tp指针指向。
delete [] tp;//删除指向数组的指针,一定要加[]。
return ;
}

析构函数的定义:析构函数是c++中的类对象生存期结束时,被调用用来释放对象空间的特殊函数,也是自动调用的。

(1)析构函数的名字在类名前加一个~符号

(2)析构函数不能有返回值,也不能有参数,因此不可以重载

(3)析构函数可以被显示的调用,构造函数不行

 #ifndef TEST_H
#define TEST_H
class Test{
int m_i;
public:
Test(int i = ){}
Test(int i, char c){}
~Test(){} };
#endif //TEST_H int main(){ Test* tp = new Test();
tp->~Test();//显示调用析构函数
delete tp;
return ;
}

最新文章

  1. ios .a和.framework
  2. Azure SQL Database (20) 使用SQL Server 2016 Upgrade Advisor
  3. linux epoll模型使用注意点
  4. div+css进度条
  5. uniq,sort,
  6. [资源] Resources on Self-Driving Car
  7. mysql mmm高可用架构设计
  8. HDU4607 - Park Visit(树的直径)
  9. ECP系统J2EE架构开发平台
  10. (1)常见O(n^2)排序算法解析
  11. 前端技术之_CSS详解第一天
  12. mysql进阶(六)模糊查询的四种用法介绍
  13. 从jsp到java文件再返回到前台页面的过程
  14. LoRa---她的芯片和她的几种工作模式
  15. 编译EXE文件的时候pcap编译不进去。 pyinstaller pcap pypcap 报错
  16. 解决JS中missing ( before function parameters的错误
  17. Delphi for iOS开发指南(4):在iOS应用程序中使用不同风格的Button组件
  18. 第一章:了解SQL_数据库基础
  19. fiddler对安卓APP进行抓包
  20. logger类

热门文章

  1. leetcode122
  2. DevExpress GridView 显示行号
  3. RabbitMQ-从基础到实战(4)— 消息的交换(中)
  4. chrome浏览器控制台 console不打印信息问题解决办法。
  5. python 网页爬虫,下载网络图片
  6. ABAP-SET UPDATE TASK LOCAL
  7. H5 缓存机制解析
  8. mysql 数据备份及数据迁移
  9. ubuntu 命令安装软件
  10. ARMV7,ARMV8