博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++注意事项——1、确保每个对象在使用前已被初始化
阅读量:4112 次
发布时间:2019-05-25

本文共 881 字,大约阅读时间需要 2 分钟。

C是”接近机器的“,通过一系列函数完成过程的实现。

C++是接近问题的,通过一些了的类实现面向问题的解决方案。其关键思想是多态性。

C++对C语言的扩张最为重要的两个概念是面向对象和泛型编程。

注意事项:

1、确保每个对象在使用前已被初始化

      CPerson::CPerson(int  age ,string   name)

     {

         m_age=age;

        m_name=name;

     }

   这个只是赋值,而不是初始化,因为C++规定对象中成员变量的初始化发生在对象的构造函数之前。

 一个较佳的写法是使用成员初始化列表替换赋值动作。

      CPerson::CPerson(int  age ,string   name)

        :m_age(age),m_name(name)

     {

     }

这个与上一个构造函数最终的结果是一样的,但是效率更高。

使用赋值初始化对象变量时,即第一个构造函数,会在构造函数执行前,调用默认构造函数初始化初始化m_age、m_name。

然后再立刻执行赋值操作。而通过初始化列表,避免了该操作。

有些情况下,即使赋值和初始化列表两者效率一样,也得使用初始化列表。

如果成员变量是const 或reference,他们就一定要初始化,而不能被赋值。

C++有固定的初始化顺序:

基类先于子类初始化;

类中的变量总是以变量声明的顺序进行初始化,和成员初始化列表无关,所以在成员初始化列表中初始化各变量时,最好以声明的次序为顺序。

non-local static对象初始化问题:为了避免在对象初始化之前过早地使用它们,

需要:手动初始化内置类型的对象;或者使用成员初始化列表初始化对象的所有成分。

 C++中的static对象是指存储区不属于stack和heap、"寿命"从被构造出来直至程序结束为止的对象。这些对象包括全局对象,定义于namespace作用域的对象,在class、function以及file作用域中被声明为static的对象。其中,函数内的static对象称为local static 对象,而其它static对象称为non-local static对象。

转载地址:http://ulesi.baihongyu.com/

你可能感兴趣的文章
Objective-self关键字
查看>>
Objective-C空指针与野指针
查看>>
Android开发中的Extras
查看>>
Intent使用意图(二)
查看>>
【整理】Xcode中的iOS模拟器(iOS Simulator)的介绍和使用心得
查看>>
IOS中实现动画的三种方式
查看>>
Iphone控件大全
查看>>
IOS随机获取想要的内容
查看>>
IOS中Json解析的四种方法
查看>>
Android抽象布局——include、merge 、ViewStub
查看>>
Listview 控件的头尾布局
查看>>
含有CheckBOX 的listview控件实现全选全不选的功能
查看>>
Android错误信息的汇总
查看>>
iOS应用程序状态切换相关
查看>>
Android内存管理
查看>>
android中的文件操作详解以及内部存储和外部存储
查看>>
java中几种常用的排序方法
查看>>
webview实现文件下载的功能
查看>>
Android 自定义控件玩转字体变色 打造炫酷ViewPager指示器
查看>>
Keyboard的显示与隐藏
查看>>