zoukankan      html  css  js  c++  java
  • github上的每日学习 10

    一、 委托构造函数

    委托构造函数用在什么地方呢?
    当一个类里有许多构造函数的时候,往往会又很多重复的,这就像重载函数一样,这时候C++就给出了委托构造函数来解决这个问题!
    理解机制:就是一个构造函数委托另一个构造函数来完成任务。
    例子:

    原来需要写的两个构造函数:

    应用了委托构造函数之后:

    其实这就相当于在第二构造函数里面调用第一个构造函数完成赋值。这样做的好处是保持修改的方便快捷!

    二、 复制构造函数

    用在什么地方:想要把一个已有对象赋值给新对象的时候。
    运行机制:赋值啦!
    编译器会构造默认的复制构造函数。
    使用说明:它的形参是本类对象的引用。
    语法:

    声明:
    Class 类名{
    Public:
    类名(形参);//构造函数
    类名(const 类名&对象名);//赋值构造函数,const的作用,已经学习过引用是可以双向传递的,所以要保证赋值过后就要两个对象无关,所以这时候写const保证是一次赋值。
    
    }
    
    定义
    类名::类(const 类名&对象名)//复制构造函数的实现
    {函数体}
    

    参数是类的对象是会发生复制构造,返回值是对象是也会产生复制构造。当然隐含的赋值构造函数会大部分解决的。(没有指针成员)
    当然,也有一些情况下不想要编译器生成隐含的赋值构造函数,这时候可以用delete

    在class中写上:
    Class 类名{
    Public:
    类名(形参);//构造函数
    类名(const 类名&对象名)=delete;//不生成隐含的复制构造函数 
    }
    

    三、 赋值构造函数的练习

    Point::Point(const Point &p)
    {
    	X=p.x;
    	Y=p.y;
    Cout<<”Calling the copy constructor”<<endl;
    }
    

    四、 析构函数

    用在哪?
    对象被删除后完成一些清理工作!
    编译器还是有默认析构函数。
    语法:

    类中声明:

    ~Point();

    定义析构函数:
    }```
    参数表必须为空。
  • 相关阅读:
    js深拷贝和浅拷贝
    Entity Framework在WCF中序列化的问题
    EF Code First学习笔记:数据库创建
    Entity Framework Code First级联删除
    EF Code First 学习笔记:表映射
    Func与Action
    jsp/servlet页面跳转丢失样式问题
    Tomcat中配置URIEncoding="UTF-8"来处理中文的方法
    Android studio 自动导入(全部)包 import
    LInux系统配置
  • 原文地址:https://www.cnblogs.com/zouzou-1/p/12266552.html
Copyright © 2011-2022 走看看