c++构造函数 对象初始化
最近查看了关于c++构造函数的博客,为了防止关键知识的遗忘,特此记录一些要点,以便于今后的查阅。
如果不主动书写构造函数,c++或默认提供一般构造函数,拷贝构造函数以及复制运算符的操作。
一般的构造函数没有任何参数,默认提供的该种构造函数不执行任何操作
默认提供的拷贝构造函数简单的将成员变量赋值
默认提供的复制运算也是简单的将成员变量赋值
假设有类A,3种初始化方法在代码中表现如下
A a(); 一般的构造函数(带参数的一般构造函数可以视作对a的重载)
A a(b); 拷贝构造函数
A a = c; 赋值运算
值得注意的是 如果有动态分配的类成员 那么应该重载拷贝构造函数和赋值运算符
主要是由于,默认的考培构造和=运算符都是简单的进行成员的复制,这样会导致两个对象的成员同时指向一块内存区域,两个成员粘滞在一起,改动了其中一个,另一个也会发生改变。所以必须重载这个函数以及运算符,保证每个对象的成员(动态分配)都有自己独立的空间。
关于如何对赋值运算符进行重载, 会在另一篇中记载
c++构造函数 对象初始化的更多相关文章
- C++ 构造函数_内存分区_对象初始化
内存分区 栈区:int x = 0:int *p = NULL; 定义一个变量,定义一个指针时,会在栈区进行分配内存.分配的内存系统分配收回的,我们不用管. 堆区:int *p = new i ...
- C++ 构造函数的对象初始化列表
//构造函数的对象初始化列表 #define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; class P ...
- java基础课程笔记 static 主函数 静态工具类 classpath java文档注释 静态代码块 对象初始化过程 设计模式 继承 子父类中的函数 继承中的构造函数 对象转型 多态 封装 抽象类 final 接口 包 jar包
Static那些事儿 Static关键字 被static修饰的变量成为静态变量(类变量) 作用:是一个修饰符,用于修饰成员(成员变量,成员方法) 1.被static修饰后的成员变量只有一份 2.当成员 ...
- EC笔记,第一部分:4.确定对象初始化
04.确定对象初始化 将对象初始化,C++反复无常,所以在使用前应该手动初始化 1.分清赋值与初始化 以下例子: class test{ public: int a; test(){ a=0;//赋值 ...
- main与对象初始化 in C++
没有学过代码编译的原理,以前也没有兴趣去学编译器的相关原理,但是近期通过阅读google开源项目gtest,对我稍有触动. 代码: main test示例 TEST宏定义 #define TEST(t ...
- Linq专题之对象初始化器
在C#3.0之前,如果创建一个新的对象,往往需要调用类的构造函数来初始化该对象的值,在c#3.0提供了一个"对象初始化器"的机制,使得开发人员在创建新的对象时不通过调用类的构造函数 ...
- C++中对象初始化
在C++中对象要在使用前初始化,永远在使用对象之前先将它初始化. 1.对于无任何成员的内置类型,必须手工完成此事. 例如: int x=0; double d; std::cin>>d; ...
- JAVA 对象初始化的过程
对象初始化的过程例:Student S = new Student();1.因为new Student()用到了Student类,所以会把它从硬盘上加载进入内存2.如果有static静态代 ...
- Java对象初始化详解
在Java中,一个对象在可以被使用之前必须要被正确地初始化,这一点是Java规范规定的.本文试图对Java如何执行对象的初始化做一个详细深入地介绍(与对象初始化相同,类在被加载之后也是需要初始化的,本 ...
随机推荐
- 怎么让我们自己开发的Android程序设为默认启动
怎么让我们自己开发的Android程序设为默认启动呢?其实很简单,只要在AndroidManifest.xml文件中配置一下首次启动的那个Activity即要. <activity ...
- gulp教程之gulp-htmlmin
简介: 使用gulp-htmlmin压缩html,可以压缩页面javascript.css,去除页面空格.注释,删除多余属性等操作. 1.安装nodejs/全局安装gulp/本地安装gulp/创建pa ...
- Mongodb插入记录
Mongodb下文档的数据结构和JSON基本一样. 所有存储在集合中的数据都是BSON格式. BSON是一种类json的一种二进制形式的存储格式,简称Binary JSON. 插入文档 MongoDB ...
- using border-radius to make a worker
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="U ...
- hdoj 1385Minimum Transport Cost
卧槽....最近刷的cf上有最短路,本来想拿这题复习一下.... 题意就是在输出最短路的情况下,经过每个节点会增加税收,另外要字典序输出,注意a到b和b到a的权值不同 然后就是处理字典序的问题,当松弛 ...
- codeforces 501 C,D,E
C题意: 给定n个点(标号0~n-1)的度数(就是与其邻接的点的个数)和所有与它邻接的点标号的异或和,求满足这些条件的树的边应该是怎么连的,将边输出出来 这里可以理解成拓扑排序的方式考虑,当i度数为1 ...
- spring.net object 配制节点记录
<object id="Login" name="LoginService" type="SoftSFramework.BaseInfoServ ...
- ServiceStack V3 版本 免费 redis的操作类
Referencing v3 packages in New Projects If you want a new project to use ServiceStack's v3 packages ...
- oracle_空值判断
Oracle空值测试 比较项目 is null is not null nvl 说明 NULL true false true null true false true 'NULL' fals ...
- Android Service提高
我们从以下几个方面来了解Service IntentService的使用 Service与Thread的区别 Service生命周期 前台服务 服务资源被系统以外回收处理办法 不被销毁的服务 Inte ...