C++构造函数和析构函数的学习(一)-创新互联

构造函数是类中特殊的成员函数。

在和平等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都网站设计、成都网站制作 网站设计制作按需定制,公司网站建设,企业网站建设,成都品牌网站建设,成都营销网站建设,成都外贸网站制作,和平网站建设费用合理。

  创建类类型的新对象的,系统会自动调用构造函数。

  构造函数的调用是为了保证每个数据成员都能被正确初始化。

  构造函数的作用初始化。

  通常情况下,构造函数应声明为公有函数,构造它不能像其他成员函数那样被显式的调用。

  构造函数被声明为私有有特殊的用途。

  构造函数可以有任意类型和任意个数的参数,一个类可以有多个构造函数。

   如果程序未声明构造函数,默认会生成一个空的构造函数。

   不带参数的构造函数称为默认构造函数。

  如果有一个构造函数,系统不再生成默认构造函数

Test.h

  1. //Test.h
  2. # ifndef _TEST_H_
  3. # define _TEST_H_
  4. class
  5. public如果程序未声明构造函数,默认会生成一个空的构造函数
  6. private
  7. int
  8. # endif //_TEST_H_

Test.cpp

  1. //Test.cpp
  2. # include "Test.h"
  3. # include 
  4. usingnamespace
  5. "Initializing Default "

main.cpp

  1. # include 
  2. # include "Test.h"
  3. usingnamespace
  4. intvoid
  5. return

 运行结果:

C++构造函数和析构函数的学习(一)

 //   如果有一个构造函数,系统不再生成默认构造函数

Test.h

  1. //Test.h 
  2. # ifndef _TEST_H_ 
  3. # define _TEST_H_ 
  4.  
  5. class Test 
  6. public: //如果程序未声明构造函数,默认会生成一个空的构造函数
  7.     Test(int num); 
  8. private: 
  9.     int num_; 
  10. }; 
  11.  
  12. # endif //_TEST_H_ 

Test.cpp

  1. //Test.cpp 
  2. # include "Test.h" 
  3. # include  
  4. using namespace std; 
  5.  
  6. Test::Test(int num) 
  7.     num_ = num; 
  8.     cout << "Initializing " << num_  << endl; 

main.cpp

  1. # include  
  2. # include "Test.h" 
  3. using namespace std; 
  4.  
  5. int main(void) 
  6. { //自动调用构造函数
  7.     Test t(10); 
  8.  
  9.     return 0; 

 运行结果:

C++构造函数和析构函数的学习(一)

构造函数重载的实例:

Test.h

  1. //Test.h 
  2. # ifndef _TEST_H_ 
  3. # define _TEST_H_ 
  4.  
  5. class Test 
  6. public: //如果程序未声明构造函数,默认会生成一个空的构造函数
  7. Test();
  8.     Test(int num); 
  9. private: 
  10.     int num_; 
  11. }; 
  12.  
  13. # endif //_TEST_H_ 

Test.cpp

  1. //Test.cpp 
  2. # include "Test.h" 
  3. # include  
  4. using namespace std; 
  5.  
  6. Test::Test()
  7. {
  8. num_ = 0;
  9.     cout << "Initializing default "  << endl; 
  10.  
  11. Test::Test(int num) 
  12.     num_ = num; 
  13.     cout << "Initializing " << num_  << endl; 

main.cpp

  1. # include  
  2. # include "Test.h" 
  3. using namespace std; 
  4.  
  5. int main(void) 
  6. { //自动调用构造函数
  7.     Test t1;
  8. Test t2(10); 
  9.  
  10.     return 0; 

 运行结果:

C++构造函数和析构函数的学习(一)

 构造函数与new运算符

  1. //构造函数与new运算符
  2. # ifndef _TEST_H_
  3. # define _TEST_H_
  4. class
  5. public
  6. ////可以显式的写一个默认构造函数,这样两个函数就成了重载
  7. int
  8. //析构函数不能重载
  9. //析构函数不能带参数,如果带参数就可以重载
  10. void
  11. private
  12. int
  13. # endif 

Test.cpp

  1. # include "Test.h"
  2. # include 
  3. usingnamespace
  4. void
  5. "Initializing Default"
  6. int
  7. "Initializing "
  8. "Destory "

main.cpp

  1. # include 
  2. # include "Test.h"
  3. usingnamespace
  4. intvoid
  5. //不仅仅分配了内存,还调用了构造函数
  6. new//new operator
  7. //不仅仅释放了内存,也调用了析构函数     
  8. delete
  9. return

运行结果:

C++构造函数和析构函数的学习(一)

//全局对象的构造先于main函数

  1.  
  2. # ifndef _TEST_H_ 
  3. # define _TEST_H_ 
  4.  
  5. class Test 
  6. public: 
  7.     ////可以显式的写一个默认构造函数,这样两个函数就成了重载 
  8.     Test(); 
  9.     Test(int num); 
  10.     //析构函数不能重载 
  11.     //析构函数不能带参数,如果带参数就可以重载 
  12.     ~Test(); 
  13.     void Display(); 
  14. private: 
  15.     int num_; 
  16. }; 
  17.  
  18. # endif  

Test.cpp

  1. # include "Test.h" 
  2. # include  
  3. using namespace std; 
  4.  
  5. void Test::Display() 
  6.     cout << num_ << endl; 
  7. Test::Test() 
  8.     num_ = 0; 
  9.     cout<<"Initializing Default" << endl; 
  10.      
  11. Test::Test(int num) 
  12.     num_ = num; 
  13.     cout<<"Initializing "<
  14.  
  15. Test::~Test() 
  16.     cout << "Destory " << num_ << endl; 

main.cpp

  1. # include "Test.h"
  2. usingnamespace
  3. //全局对象的构造先于main函数
  4. intvoid
  5. "Entering main ..."
  6. "Exiting  main ..."
  7. return

运行结果:

C++构造函数和析构函数的学习(一)

  默认析构函数是一个空函数

  析构函数没有参数

  析构函数不能被重载

  析构函数与数组

Test.h

  1. //Test.h
  2. # ifndef _TEST_H_
  3. # define _TEST_H_
  4. class
  5. public
  6. ////可以显式的写一个默认构造函数,这样两个函数就成了重载
  7. int
  8. //析构函数不能重载
  9. //析构函数不能带参数,如果带参数就可以重载
  10. void
  11. private
  12. int
  13. # endif //_TEST_H_

Test.cpp

  1. //Test.cpp
  2. # include 
  3. # include "Test.h"
  4. usingnamespace
  5. void
  6. "Initializing Deafule "
  7. int
  8. "Initializing "
  9. "Destory "

main.cpp

  1. //main.cpp
  2. # include 
  3. # include "Test.h"
  4. usingnamespace
  5. intvoid
  6. //定义对象数组
  7. //动态对象
  8. new//传递参数2
  9. delete
  10. //没有传递任何参数,创建了两个对象
  11. new
  12. delete
  13. return

运行结果:

C++构造函数和析构函数的学习(一)

  析构函数不能重载

  析构函数不能带参数,如果带参数就可以重载

  析构函数可以显式调用,一般很少用到,会实现一些特殊的效果:

  1. //main.cpp
  2. # include "Test.h"
  3. intvoid
  4. //析构函数被调用了两次
  5. //析构函数很少调用,可以显式调用
  6. return

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享题目:C++构造函数和析构函数的学习(一)-创新互联
URL地址:http://csdahua.cn/article/jcpie.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流