对象的初始化 如下

ckasss Person
{
public:
char name[];
char sex;
int age; }; Person p={"cheng",'f' ,}; //对象初始化

构造数组对象时,需要一个没有参数的构造函数,进行对象初始化。

如果定义了一个对象,而忘记了初始化,对象里面的内容都是未知的,进而造成错误,

而类里面有一个自动初始化对象,通过构造函数去初始化对象。

构造函数

(1)构造函数是成员函数,函数体可写在类体内,也可以写在类体外

(2)构造函数时特殊函数,该函数的名字与类名字相同,不指定返回值类型。

(3)构造函数可以重载,即可以定义多个参数个数不同的构造函数

(4)在创建对象时,系统自动调用构造函数。

形式如下

ckass Person
{
public: Perosn() //内部创建
{
int i;
return ;
}
}; 外部创建
Person :: Person()
{
int i;
return;
}

析构函数

对象同样需要恰当的被销毁,c++提供了析构函数,

在对象销毁时自动调用,(并且析构函数不带参数)

一个类只能定义一个析构函数,即析构函数不允许重载,

一般的,将析构函数定义为公有成员函数,

在类体内定义析构函数的一般格式是:

~classname()

{

....

}

在类体外定义析构函数的一般格式是:

classname :: ~classname()

   ....

1.当对象是系统自动创建的,则在对象的作用域结束时,系统自动调用析构函数。

2.当一个对象是使用new运算符被动态创建的,在使用delete运算符释放它时,delete将会自动调用析构函数。 

1、全局对象,程序一开始,其构造函数就先被执行(比程序进入点更早);程序即将结束前其析构函数将被执行。

2、局部对象,当对象生成时,其构造函数被执行;当程序流程将离开该对象的声明周期时,其析构函数被执行。

3 、静态(static)对象,当对象生成时其构造函数被执行;当程序将结束时其析构函数才被执行,但比全局对象的析构函数早一步执行。

4、以new方式产生出来的局部对象,当对象生成时其构造函数被执行,析构函数则在对象被delete时执行时执行

c++中对象的构造和销毁的更多相关文章

  1. C++深度解析教程学习笔记(6)对象的构造和销毁

    1. 对象的初始化 (1)从程序设计的角度看,对象只是变量,因此: ①在栈上创建对象时,成员变量初始化为随机值 ②在堆上创建对象时,成员变量初始化为随机值 ③在静态存储区创建对象时,成员变量初始化为 ...

  2. C++中对象的构造顺序

    1,C++ 中的类可以定义多个对象,那么对象构造顺序是怎样的? 1,很多的 bug 是由对象的构造顺序造成的,虽然它不难: 2,对象的构造往往和构造函数牵涉在一起,构造函数的函数体又可能由非常复杂的程 ...

  3. Java中对象构造

    构造函数 作用:在构造对象的同时初始化对象.java强制要求对象 诞生同时被初始化,保证数据安全. 调用过程和机制:①申请内存,②执行构造函数的函数体,③返回对象的引用. 特点:与类同名,无返回类型, ...

  4. C++类继承中,基类/当前对象属性/当前对象的构造顺序

    [1]中提到,规范的派生类构造函数三个要点: 首先创建基类对象 应通过成员初始化列表,创建基类对象 应该初始化本派生类新增的成员变量 那在构造派生类实例的过程中,其基类(以及多继承的时候多个基类)/当 ...

  5. cocos2dx中对象的两步初始化

    笔者进来开始研究cocos2d这个非常火爆的游戏引擎,在一番折腾后,总算在win7系统下把windows和android平台搭建好了.当然接下来是从官方示例中最简单的HelloCpp项目开始.笔者使用 ...

  6. .net中对象序列化技术浅谈

    .net中对象序列化技术浅谈 2009-03-11 阅读2756评论2 序列化是将对象状态转换为可保持或传输的格式的过程.与序列化相对的是反序列化,它将流转换为对象.这两个过程结合起来,可以轻松地存储 ...

  7. C++中对象初始化

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

  8. (原)java中对象复制、==、equals

    对于基本数据类型而言,即如下八种基本数据类型,int,boolean,char,byte,short,float,double,long. public class test { public sta ...

  9. js中对象的创建

    json方式,构造函数方式,Object方式,属性的删除和对象的销毁 <html> <head> <title>js中的对象的创建</title> &l ...

随机推荐

  1. 【题解】有标号的DAG计数1

    [HZOI 2015] 有标号的DAG计数 I 设\(f_i\)为\(i\)个点时的DAG图,(不必联通) 考虑如何转移,由于一个DAG必然有至少一个出度为\(0\)的点,所以我们钦定多少个出度为\( ...

  2. 克隆linux系统后,将eth1修改成eth0

    使用VMware克隆的linux系统之后,发现网卡信息只有eth1,却没有eth0.将eth1修改成eth0. 1.vi /etc/udev/rules.d/70-persistent-net.rul ...

  3. cometoj 茶颜悦色|扫描线+懒惰标记

    传送门 题目描述 茶颜悦色也太好喝了!鸡尾酒在长沙的各种茶颜悦色的店铺中流连忘返.他发现长沙有炒鸡多的茶颜悦色店,走两步就能遇到一家. “方圆一公里能有十家茶颜悦色!”鸡尾酒感叹了起来. 于是他想到了 ...

  4. C# Post发送 接受Xml

    //组合xml内容 StringBuilder strBuilder = new StringBuilder(); var par= @"<xml> <appid>w ...

  5. Spring Boot 集成 Seata 解决分布式事务问题

    seata 简介 Seata 是 阿里巴巴2019年开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务.在 Seata 开源之前,Seata 对应的内部版本在阿里内部一 ...

  6. ArcEngine 创建要素,删除要素,生成网格,渲染图层(VB)

    示例代码:https://github.com/yu969890202/ArcEngine/tree/master/WinFrom_ArcEngine_PointDistribution博客后面有两张 ...

  7. TensorFlow——LinearRegression简单模型代码

    代码函数详解 tf.random.truncated_normal()函数 tf.truncated_normal函数随机生成正态分布的数据,生成的数据是截断的正态分布,截断的标准是2倍的stddev ...

  8. hadoop搭建

    一.前期准备 1.1 静态ip,请查看虚拟机安装不放呢 1.2 hostname 以及 hosts文件修改 cat /etc/hostname 不同的机器设置不同的名字 cat /etc/hosts ...

  9. ThinkPad全家族机型对比

    如图所示

  10. 让现有vue前端项目快速支持多语言 - 用.net core程序快速替换中文为资源Key,咱不干体力活

    前言 最近应公司上层要求,需要将现有项目尽快支持多语言,而中文内容可以找专业人员翻译.那么咱们说干就干,首先我们项目的前端是用vue写的spa程序且组件方面用的element ui,那么自然而然想到用 ...