`
wsql
  • 浏览: 11797555 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

C++中类的理解

 
阅读更多

1、在类内部定义的函数默认为内联函数,不过是否最终成为内联函数要看函数是否足够简单。

2、一种比较特殊的成员函数是const成员函数,该函数拥有一个隐含的const类型的this指针,因此该类型的函数不能改变类的数据成员。

3、用struct和class定义的类的唯一区别在于,struct默认的成员是公有的,而class默认是私有的。

4、inline函数可以在声明或者定义处指定,都是合法的。与其他inline一样,inline函数必须在调用该函数的源文件中可见,所以最好放在头文件中。

5、如果在多个文件中定义同一个类,那么这些定义必须是相同的。因此通常将类的定义放置在头文件中,所有需要使用该类的文件都引用同一个头文件,这就保证了类定义的一致性。

6、可以声明一个类而不定义它,这样就会形成一个不完全类型,只能以有限的方式使用不完全类型,如:只能定义该类型的指针和引用以及函数的返回值类型,不能定义该类型的对象,不过可以定义该类型的静态对象(原因暂不明确)。

7、每个类的定义必须用分号结束,因为类的定义之后会接一个对象定义的列表,而对象定义之后需要加分号,所以。。。

8、非const成员函数包含的this指针是一个指向类对象的const指针,而const成员函数包含的是一个指向const对象的const指针。

9、基于成员函数是否为const可以进行重载,const对象只能调用const成员,非const对象可以使用任何一个成员,但是非const版本是一个更好的匹配。

10、类中有一种特殊的数据成员,可变数据成员mutable,可变数据成员永远不能为const,const类型的成员函数同样可以改变可变数据成员。

11、一旦定义有形参的构造函数,默认无形参的构造函数就不在自动生成,需要自己定义。构造函数声明为const是不必要的,构造函数的工作是初始化对象而不会在意对象是否为const。构造函数不能是虚函数,因为虚函数需要将vtable和指向vtable的指针存储在对象中,但是如果构造函数是虚函数,对象尚未生成vtable将无处存放。另外一点,虚函数的作用是为了使用父类指针动态调用不同子类的虚函数,显然构造函数没有这个必要。

12、构造函数的初始化列表,尽量使用该方式初始化对象,有些情况下必须使用初始化列表,比如const和引用的数据成员的初始化。数据成员在初始化列表中的顺序不代表真正的初始化顺序,顺序由类声明中各个数据成员的声明的次序决定。

13、类中的隐式类型转换,当类的构造函数只有一个形参时,会在形参和类类型之间发生隐身转换,很多情况下这种隐式的转换带来的更多的是隐患,因为程序猿可能没有意识到这种转换,所以在定义只有一个形参的构造函数时,要将其声明为explicit。

14、友元函数和友元类。必须先定义包含成员函数的类,才能将成员函数设为友元。对友元类和非成员函数的友元没有太多的要求

15、static遵循正常的公有/私有访问规则,static的成员函数不能为const类型,以为static不输入任何对象不包含this指针。

分享到:
评论

相关推荐

    c++类的课件

    包含c++中关于类的完全介绍,便于新手更加全面理解c++中类的知识点

    深入理解 C++11 :C++11 新特性解析与应用.pdf

    深入理解 C++11深入理解 C++11 非扫描版, 高清文字版

    深入理解C++11新特性解析与应用.pdf

    深入理解C++11:C++11新特性解析与应用》主要内容:[0国0]内[0首0]本全面深入解读C++11新标准的专著,由C++标准委员[0会0]代表和IBM XL编译器中[0国0]开发团队共同撰写。不仅详细阐述了C++11标准的设计原则,而且...

    通过汇编理解c++

    通过挖掘c++编译器源码,深入理解c++语言精粹,有助于深刻掌握c++语言精髓。

    C++ 模板类 简单试用

    一个DevC++工程,工程中是模板类的试用,用最简单的语句,便于理解C++模板编程

    电子书 深入理解C++11(PDF)

    深入理解C++11电子书。介绍了C++11的新特性。通俗易懂。

    深入理解C++11

    深入理解C++11深入理解C++11深入理解C++11深入理解C++11深入理解C++11

    深入理解c++11 pdf

    情景: 在派⽣类中我们写的构造函数完完全全是为了构造基类,⽽基类有很多构造函数,那么我们需要为派⽣类写很多的"透传"构造函数. c++11 使⽤using声明继承基类的构造函数来解决这个重复写的问题.

    Jpg加载、显示c++类

    本人也是学习c++时便实现一下,希望高手们指点,并对类及实验性软件中存在的缺陷与错误予以勘正,还请告知我! 本类可以加载多种图像文件如:jpg 、bmp 、gif等,且还可以加载一批图像文件。若有不明白的地方请看...

    C++基础理解程序

    程序中引用了C++11的内容,需要添加代码: -std=c++11 语言环境使用的是:DevC++

    线性表的顺序存储C++实现(类模板实现)

    使用C++类模板实现了线性表的顺序存储结构,类中包含了线性表的常用方法:向线性表中插入一个元素、删除一个元素、清空线性表、获取一个元素、获取线性表长度、获取线性表的容量等。大致实现了STL中的线性表基本功能...

    C++中回调函数(CallBack)的用法分析

    这也可以理解为什么C++类的多个实例可以共享成员函数却-有不同的数据成员。由于this指针的作用,使得将一个CALL-BACK型的成员函数作为回调函数安装时就会因为隐含的this指针使得函数参数个数不匹配,从而导致回调...

    深入理解C++11:C++11新特性解析与应用.rar_C++11新特性_C++11特性说明_深入应用 C++11_深入理解 c

    能较好的说明C++11的特性,起到较好说明功能

    C++编程思想,进一步理解c++

    本书作者根据自己学习C++的亲身体会及多年教学经验,用简单的例子和简练的叙述讲解C++编程,别具特色。 全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流...

    深入理解c++11pdf

    深入理解c 11 pdf

    C++ 模板类 vector

    使用C++模板类对vector的重写,支持STLvector的一般操作和溢出处理,对STLvector的理解有帮助

    C++语言对类与对象的理解

    c++语言对类与对象的深刻理解!希望与大家分享!

    C++类和对象练习 实现日期类

    为了更好的理解`C++`类和对象的知识,我们可以动手实现一下`C++`的一个简单的日期类,完成相应的函数,更好的帮助我们理解类和对象. 从日期类的构造函数,拷贝构造,获取当月天数,日期与天数的运算,日期类相关的比较...

Global site tag (gtag.js) - Google Analytics