对象的初始化 如下

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. windows 服务的安装、启动、状态查询、停止操作c++实现

    具体的自己看看代码 粘贴复制即可使用 卸载也很简单自己查看MSDN 加上就是 #ifndef __SERVICEMANAGE_H__ #define __SERVICEMANAGE_H__ #incl ...

  2. 【转载】CSS flex属性深入理解

    文章转载自 张鑫旭-鑫空间-鑫生活 http://www.zhangxinxu.com/ 原文链接:https://www.zhangxinxu.com/wordpress/2019/12/css-f ...

  3. A记录都不懂,怎么做开发Leader?

    开发 Leader 和一线开发的区别在于:普通一线开发很多时候都只接触业务编码,不需要关注除开发之外的其他事情.但是作为一个开发 Leader,不仅仅需要懂开发层面的东西,还需要懂得运维层面的东西. ...

  4. button 使用 flex 布局的兼容性问题

    button 使用 flex 布局的兼容性问题 在低版本的手机系统中, button 不能够作为 flex 元素,即使在 CSS 中指定了 display: flex 且 autoprefixer 也 ...

  5. kubelet--help-v1.15.4

    kubelet --help 官方文档   The kubelet is the primary "node agent" that runs on each node. It c ...

  6. docker-tmpfs挂载

    使用tmpfs挂载 卷和绑定装置允许在主机和容器之间共享文件,以便即使在容器停止后也可以保留数据. 如果你在Linux上运行Docker,你有第三个选择:tmpfs mounts.使用tmpfs装载创 ...

  7. Redis 持久化的两种方案

    reids是一个key-value存储系统,为了保证效率,缓存在内存中,但是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,以保证数据的持久化. 所以:redis是一个支持持 ...

  8. 负载均衡之ribbon

    一.什么是负载均衡? 做web开发都会接触到负载均衡,这里我们就不细说了. (摘自百度百科)负载均衡,英文名称为Load Balance,其含义就是指将负载(工作任务)进行平衡.分摊到多个操作单元上进 ...

  9. react-antd-input-onPressEnter

    2020-01-11 ant-Design ,Input , onPressEnter 和 onChange 的区别 需求:看下图,右边栏配置开关组件的内容.输入内容,不想要左边实时更改 原来的代码: ...

  10. Visual Studio 2019移除/禁用Live Share按钮

    Visual Studio 2019新增了几个按钮,搜索按钮,Live Share按钮,发送反馈按钮,管理员按钮(即 “Live Share”, “Send Feedback” ,“ADMIN”) L ...