C++中的构造函数可以分为4类: 
(1)默认构造函数。以Student类为例,默认构造函数的原型为 
Student();//没有参数 
(2)初始化构造函数 
Student(int num,int age);//有参数 
(3)复制(拷贝)构造函数 
Student(Student&);//形参是本类对象的引用 
(4)转换构造函数 
Student(int r) ;//形参时其他类型变量,且只有一个形参

默认和初始化构造函数

默认构造函数和初始化构造函数在定义类的对象的时候,完成对象的初始化工作。

class Student
{
public:
//默认构造函数
Student()
{
num=;
age=;
}
//初始化构造函数
Student(int n,int a):num(n),age(a){}
private:
int num;
int age;
};
int main()
{
//用默认构造函数初始化对象S1
Student s1;
//用初始化构造函数初始化对象S2
Student s2(,);
return ;
}

复制(拷贝)构造函数

  • 复制构造函数用于复制本类的对象

    Student  s2(,);
    Student s3(s2);//将对象s2复制给s3。注意复制和赋值的概念不同。
  • 下面这种情况叫做赋值,不调用复制构造函数
Student s4;
s4=s2;//这种情况叫做赋值,自己体会吧
  • 大多数时候,在类中我们没有声明复制构造函数,而是C++自动为我们生成了一个复制构造函数,如下:

    Student(Student &b)
    {
    this.x=b.x;
    this.y=b.y;
    }
      • 如代码所示,它的作用是将一个已存在的对象b,复制给调用该复制构造函数的对象。
      • 具体来说,在一下情况发生时,会调用复制构造函数: 
        1. 用复制的方法,建立一个新对象。
        2. 函数的形参为类的对象时。(这点和普通类型的形参类似,要复制一份实参给函数)
        3. 函数的返回值是类的对象,在函数中定义的对象,在函数结束后消息,需要调用复制构造函数,建立一个临时的对象,将该临时对象返回给调用该函数的对象。
        4. 默认的复制构造函数,在某些情况下会出现问题,想深入学习可以自行百度。
  • 转换构造函数

    • 转换构造函数用于将其他类型的变量,隐式转换为本类对象。
    • 下面的转换构造函数,将int类型的r转换为Student类型的对象,对象的age为r,num为1004.
      Student(int r)

      int num=;
      int age= r;
      • 转换构造函数可以用在哪里?
      • 假如重载了+号运算符,使得两个Student类的对象可以相加,其结果为两个对象的成员变量age之和。
        Student s1(,);
        Student s2(,);
        s1+s2; //其值就是s1.age + s2.age = 18+20=36。

C++中的构造函数的更多相关文章

  1. 解析C#类中的构造函数

    <解析C#类中的构造函数> 一.  C#中的构造函数概述: C#中类包含数据成员和函数成员.函数成员提供了操作类中数据的某些功能,包括方法.属性.构造器和终结器.运算符和索引器. 构造函数 ...

  2. Java中的构造函数和重载

    一.Java中的构造函数 构造函数是对象被创建时初始化对象的成员方法,它具有和它所在的类完全一样的名字.构造函数只能有入口参数,没有返回类型,因为一个类的构造方法的返回类就是类本身.构造函数定义后,创 ...

  3. 在 MVC 控制器中使用 构造函数时行依赖注入 (IoC)

    在 Controller 中使用 构造函数进行依赖注入 (IoC) 1. Controller 代码: ICard card; ICardCategory cardCategory; public C ...

  4. C++中复制构造函数与重载赋值操作符总结

    前言 这篇文章将对C++中复制构造函数和重载赋值操作符进行总结,包括以下内容: 1.复制构造函数和重载赋值操作符的定义: 2.复制构造函数和重载赋值操作符的调用时机: 3.复制构造函数和重载赋值操作符 ...

  5. 20150214—winform中使用构造函数传值

    构造函数,在函数初始化时就会执行的函数方法,在创建一个类之后,系统会自动在此类中生成一个与类名相同的函数,其中只包含一句代码: InitializeComponent(); 新建一个名字相同的函数,然 ...

  6. C++中的构造函数,拷贝构造函数和赋值运算

    关于C++中的构造函数,拷贝构造函数和赋值运算,以前看过一篇<高质量C++/C编程指南>的文章中介绍的很清楚,网上能搜索到,如果想详细了解这方面的知识可以参看一下这篇文章. 常见的给对象赋 ...

  7. Java反射机制(获取Class对象的三种方式+获取Class中的构造函数进行对象的初始化+获取反射类的字段+获取反射类的一般方法)

    反射技术其实就是动态加载一个指定的类,并获取该类中的所有内容.而且将字节码文件封装成对象,并将字节码文件中的内容都封装成对象,这样便于操作这些成员,简单来说:反射技术可以对一个类进行解剖,反射大大增强 ...

  8. C++类继承中的构造函数和析构函数 调用顺序

    思想: 在C++的类继承中,构造函数不能被继承(C11中可以被继承,但仅仅是写起来方便,不是真正的继承) 建立对象时,首先调用基类的构造函数,然后在调用下一个派生类的构造函数,依次类推: 析构对象时, ...

  9. Java中有关构造函数的一道笔试题解析

    Java中有关构造函数的一道笔试题解析 1.详细题目例如以下 下列说法正确的有() A. class中的constructor不可省略 B. constructor必须与class同名,但方法不能与c ...

  10. Java继承--子父类中的构造函数

    子父类中的构造函数的特点: 1.在子类构造对象时,发现,访问子类构造函数时,父类构造函数也运行了.   原因是:在子类的构造函数中第一行有一个默认的隐式语句. super(); 类似于this(); ...

随机推荐

  1. react-native android app名字 app包名、图标和启动图片设置

    1.设置名字 打开 android/app/src/main/res/values/strings.xml 如图,进行修改即可 2.设置图标,最简单可以直接替换,其他后在看 在上图中几个文件夹中都有一 ...

  2. zookeeper 入门知识

    作为开启分布式架构的基石,除了必会还有的选么 自己的一些理解,有错误的话请一定要给予指正! 一.是什么? 分布式数据一致性的解决方案. 二.有什么用 数据的发布/订阅(配置中心)  . 负载均衡(du ...

  3. SSL证书没有绿锁您与此网站建立的连接并非完全安全解决办法

    为什么我新建的网站配置好SSL后,网站https旁边提示不安全,没有小绿锁了? 不少国内空间的新手站长,当使用了SSL证书之后,发现浏览器有https效果了,但是没有绿锁,谷歌浏览器提示“您与此网站建 ...

  4. Todolist组件

    一.什么是组件? 组件是可复用的 Vue 实例.是页面上的某一部分. 大型项目可以拆分成很多小组件. 二.如何定义(创建)组件? 全局组件:通过Vue.component方法创建的组件是全局组件.其中 ...

  5. 11.枚举类.md

    目录 1.定义: 2.枚举类和普通类的区别: 2.1枚举类的简单构建: 2.2枚举类的成员变量.方法和构造 2.3实现接口的枚举类 1.定义: 2.枚举类和普通类的区别: 枚举类的默认修饰符是 pub ...

  6. FMS Dev Guide学习笔记(远程共享对象)

    一.开发交互式的媒体应用程序1.共享对象(Shared objects)    ----远程共享对象 在你创建一个远程共享对象之前,创建一个NetConnection对象并且连接到服务器.一旦你创建了 ...

  7. Hadoop集群(四) Hadoop升级

    Hadoop前面安装的集群是2.6版本,现在升级到2.7版本. 注意,这个集群上有运行Hbase,所以,升级前后,需要启停Hbase. 更多安装步骤,请参考: Hadoop集群(一) Zookeepe ...

  8. 使用tf.print()打印tensor内容

    使用tf.Print()打印tensor内容,这是tensorflow中调试bug的一个手段,例子如下所示: import tensorflow as tf a = tf.Variable(tf.ra ...

  9. BOS物流项目第十一天(补充)

    上节课我们在添加权限时,把选择父功能点做成这种效果,不太好,我们进行升级优化. 1.我们对jsp页面进行修改,主要是改了样式. 2.重新编写我们dao层的代码 3.在我们查看父项的时候自动查找子项,我 ...

  10. pl2303 驱动

    https://blog.csdn.net/ouening/article/details/70947759