最近查看了关于c++构造函数的博客,为了防止关键知识的遗忘,特此记录一些要点,以便于今后的查阅。

如果不主动书写构造函数,c++或默认提供一般构造函数,拷贝构造函数以及复制运算符的操作。
一般的构造函数没有任何参数,默认提供的该种构造函数不执行任何操作
默认提供的拷贝构造函数简单的将成员变量赋值
默认提供的复制运算也是简单的将成员变量赋值
假设有类A,3种初始化方法在代码中表现如下
A a();  一般的构造函数(带参数的一般构造函数可以视作对a的重载)
A a(b);  拷贝构造函数
A a = c; 赋值运算
值得注意的是 如果有动态分配的类成员 那么应该重载拷贝构造函数和赋值运算符
主要是由于,默认的考培构造和=运算符都是简单的进行成员的复制,这样会导致两个对象的成员同时指向一块内存区域,两个成员粘滞在一起,改动了其中一个,另一个也会发生改变。所以必须重载这个函数以及运算符,保证每个对象的成员(动态分配)都有自己独立的空间。
关于如何对赋值运算符进行重载, 会在另一篇中记载

c++构造函数 对象初始化的更多相关文章

  1. C++ 构造函数_内存分区_对象初始化

    内存分区 栈区:int  x = 0:int  *p = NULL; 定义一个变量,定义一个指针时,会在栈区进行分配内存.分配的内存系统分配收回的,我们不用管. 堆区:int  *p = new  i ...

  2. C++ 构造函数的对象初始化列表

    //构造函数的对象初始化列表 #define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; class P ...

  3. java基础课程笔记 static 主函数 静态工具类 classpath java文档注释 静态代码块 对象初始化过程 设计模式 继承 子父类中的函数 继承中的构造函数 对象转型 多态 封装 抽象类 final 接口 包 jar包

    Static那些事儿 Static关键字 被static修饰的变量成为静态变量(类变量) 作用:是一个修饰符,用于修饰成员(成员变量,成员方法) 1.被static修饰后的成员变量只有一份 2.当成员 ...

  4. EC笔记,第一部分:4.确定对象初始化

    04.确定对象初始化 将对象初始化,C++反复无常,所以在使用前应该手动初始化 1.分清赋值与初始化 以下例子: class test{ public: int a; test(){ a=0;//赋值 ...

  5. main与对象初始化 in C++

    没有学过代码编译的原理,以前也没有兴趣去学编译器的相关原理,但是近期通过阅读google开源项目gtest,对我稍有触动. 代码: main test示例 TEST宏定义 #define TEST(t ...

  6. Linq专题之对象初始化器

    在C#3.0之前,如果创建一个新的对象,往往需要调用类的构造函数来初始化该对象的值,在c#3.0提供了一个"对象初始化器"的机制,使得开发人员在创建新的对象时不通过调用类的构造函数 ...

  7. C++中对象初始化

    在C++中对象要在使用前初始化,永远在使用对象之前先将它初始化. 1.对于无任何成员的内置类型,必须手工完成此事. 例如: int x=0; double d; std::cin>>d; ...

  8. JAVA 对象初始化的过程

    对象初始化的过程例:Student S    =    new Student();1.因为new Student()用到了Student类,所以会把它从硬盘上加载进入内存2.如果有static静态代 ...

  9. Java对象初始化详解

    在Java中,一个对象在可以被使用之前必须要被正确地初始化,这一点是Java规范规定的.本文试图对Java如何执行对象的初始化做一个详细深入地介绍(与对象初始化相同,类在被加载之后也是需要初始化的,本 ...

随机推荐

  1. 20169212《Linux内核原理与分析》第五周作业

    关于linux内核源码 两个很关键的目录,一个是arch(architecture),支持不同cpu体系架构的源代码,其中最重要的就是x86(一般把x86留下,其他的目录删掉),另一个是init(其中 ...

  2. UEditor-从客户端(editorValue="<p>asd</p>")中检测到有潜在危险的 Request.Form 值。

    在用富文本编辑器时经常会遇到的问题是asp.net报的”检测到有潜在危险的 Request.Form 值“一般的解法是在aspx页面   page  标签中加上 validaterequest='fa ...

  3. [转]JavaScript快速检测浏览器对CSS3特性的支持

    转自:https://yuguo.us/weblog/detect-css-support-in-browsers-with-javascript/ ------------------------- ...

  4. zoom和transform:scale的区别

    小tips: zoom和transform:scale的区别 这篇文章发布于 2015年11月3日,星期二,00:52,归类于 css相关. 阅读 7876 次, 今日 8 次 by zhangxin ...

  5. CentOS_7.2编译安装PHP_5.6.20添加扩展模块

    添加ZendGuardLoader扩展: # 解压ZendGuardLoader.so到"/usr/local/php/lib/php/extensions/no-debug-non-zts ...

  6. 解决OS X系统连接VPN后无法访问内网资源的问题

    该问题是第一次使用OS X系统连接VPN遇到的问题,现象是连接VPN成功,但无法访问公司的内网资源. 主要原因还是VPN设置上的问题,在系统偏好设置中打开VPN连接,里面有个高级设置,如图: 点击高级 ...

  7. iPhone / iPad UI界面设计与图标设计的尺寸设计规范+安卓+网页

    ①iPhone的设计尺寸 iPhone界面尺寸: 设备 分辨率 状态栏高度 导航栏高度 标签栏(工具栏)高度 iPhone6 plus设计版 1242 × 2208 60px 132px 146px ...

  8. silk mpu

    #include "mpu.h" #include "mbuf.h" #include "media_buffer.h" #include ...

  9. 转: Rest简介及Spring实现

    一 Roy Fielding 2000年Rest被Roy Fielding提出来的,我对Roy Fielding的印象有以下几个. 一是RoyFielding做为Http协议的起草者,在Http协议发 ...

  10. Selenium Webdriver下click失效问题解决

    最近在使用Selenium Webdriver(Selenium2.0)进行界面自动化测试的时候发现单击事件无效,通过driver.findElement的方式是可以找到click元素的,但是就是cl ...