zoukankan      html  css  js  c++  java
  • 构造器 和析构器 完全困了

    MJLN7WRH$GADWF~Q]S)@NM2MJLN7WRH$GADWF~Q]S)@NM2[3]MJLN7WRH$GADWF~Q]S)@NM2[8]我大摇大摆的来了

    上帝懂编程?

    {EH5V39EEZZD%_VE]Y4L](Q

    构造器 : 是一个默认属性吗

    析构器到底又是什么了:对前面所做的事情 进行清理;

    构造器 -- 是一种特殊的方法, 它和普通方法的主要区别:

    --构造器的名字必须和它所在类的的名字一样

    --系统在创建 某个类的实例时会第一时间自动调用这个类的构造器

    --构造器永远不会返回任何值

     

        星星创建构造器

    class Car
    {
    Car(void):
    }
     
     
    星星定义构造器:注意大小写与类名保持一致,在结束声明之后开始定义构造器本身:
      1: Car::Car(void)// 不用写void Car::Car(void)
    
      2: {
    
      3: color ="WHITE";
    
      4: engine="V8";
    
      5: wheel =4;
    
      6: gas_tank =FULL_GAS;
    
      7: }

     

    构造对象数组:万能的数组 Car mycar[10] ;

    调用语法依旧是;  mycar[x].running 

    image

    构造器:用来完成内存申请

    析构器:用来完成  - -- 清道夫 的工作  ;析构器也永远不返回任何值 ; 复杂的类中, 析构器往往至关重要(可能引起内存泄露); 例如某个类的构造器申请了内存, 那我们就需要 …使用析构器 释放内存、

    我是华丽分割线


    割割割 木有小鸡鸡


    这样听你来理解起来好简单的样子嘛

    F_2L~DXU`AYDLK@DL3R{L(P

    那么接下 ; 我们来讨论讨论; 在 继承机制中的构造器和析构器   这个比较麻烦啦 我们先跑个程序来试试吧

    image

     

    image

    直观的程序上来

      1: #include <iostream>
    
      2: #include <string>
    
      3: using namespace std;
    
      4: 
    
      5: class  BaseClass
    
      6: {
    
      7: public:
    
      8: BaseClass();
    
      9: ~BaseClass();
    
     10: void dosomething();	
    
     11: };
    
     12: 
    
     13: class SubClass:public BaseClass
    
     14: {
    
     15: 	public:
    
     16: 	SubClass();
    
     17: 	~SubClass();
    
     18: }; 
    
     19: 
    
     20: 
    
     21: 
    
     22: void BaseClass::BaseClass()
    
     23: {
    
     24: 	cout<<"进入基类构造器";
    
     25: 	cout<<"我在基类构造器 里面干了某些事"; 
    
     26: }
    
     27: 
    
     28:  BaseClass::~BaseClass( )
    
     29: {
    
     30: 	cout<<"进入  基类  析构器 ";
    
     31: 	cout<<"我在  基类  析构器  里面干了某些事 也干了某些事";
    
     32: } 
    
     33: 
    
     34:  void BaseClass::dosomething( )
    
     35: {
    
     36: 	cout<<"我干了某些事.....";
    
     37: }
    
     38: 
    
     39:  SubClass::SubClass( )
    
     40: {
    
     41: 	cout<<"进入  子类 构造器 ";
    
     42: 	cout<<"我在  子类  构造器  里面干了某些事";
    
     43: }
    
     44:  SubClass::~SubClass( )
    
     45: {
    
     46: 	cout<<"进入  子类  析构器 ";
    
     47: 	cout<<"我在  子类  析构器  里面干了某些事 也干了某些事";
    
     48: } 
    
     49: 
    
     50: int main(int argc, char *argv[])
    
     51: {
    
     52: 	SubClass subclass;
    
     53: 	subclass.dosomething();
    
     54: 	cout<<"完事收工 结束啦 ";
    
     55: 	return 0;
    
     56: }

    恼怒 有错误 不能编译通过  错误内容

    [Error]  error: return type specification for constructor invalid

    how to fix it?

  • 相关阅读:
    alpha测试和beta测试的区别
    当设计师遭遇HTML5
    软件开发项目中如何进行风险管理
    程序员应知——关注细节
    与Janet关于敏捷测试若干问题的Q&A
    软件开发中的哲学——世界的本原是物质(一)
    软件开发中的哲学——写在前面
    软硬兼施让客户满意
    浅谈DBA的角色以及与业务的关系
    连接access时的REGDB_E_CLASSNOTREG(0x80040154)错误
  • 原文地址:https://www.cnblogs.com/yoyov5123/p/2938756.html
Copyright © 2011-2022 走看看