`
longsy
  • 浏览: 138194 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

C++类的基础认识

阅读更多
一个类就是一个用户定义类型,同时也是一个作用域

定义一个类的语法:
class class_name {
  access_specifier_1:
    member1;
  access_specifier_2:
    member2;
  ...
} object_names;

类的定义也是类的声明,故可以不同的源文件中重复出现,不会违反唯一定义的规则


访问控制标识符:控制成员对外面的可访问度
public:公有,所有用户均能访问
protected:保护,只有自己和子类能访问
private:私有,只有自己能访问

成员函数:在类中声明的函数

数据成员:在类中声明的变量
数据成员不能是本身类类型,可以是类类型的引用或指针

构造函数:提供对类对象的初始化.构造函数没有返回值,且其函数名与类名相同
构造函数可以重载
一般初始化数据成员采用构造函数初始化列表,如:
MyClass(const string &n, int a):name(n),age(n) {//...}
成员初始化的顺序:以在类中声明的顺序
建议:初始化列表中的成员顺序应与其在类声明的顺序相同为好

静态成员:如果一个变量是类的一部分,而不是各个对象的一部分,且这个变量被所有对象共享,则这种成员为一个static成员.static成员只有唯一的一份副本(它本身)

const成员函数:阻止函数修改对象的成员变量
在函数的签名后加上const
如:void GetName() const {//...};
const成员函数可以与非const成员函数形成重载
const用于构造函数是没有必要的.因为构造函数就是用于初始化对象的

this指针:每个非static成员函数都隐含一个this指针,用于指向调用该函数的对象
对于非const成员函数:this是一个指向类型的const指针(MyClass * const this)
可以使用this来修改成员信息
对于const成员函数:this是一个指向const类型对象的const指针(const MyClass * const this),不能使用this指针来修改成员信息

可变数据成员:可以在任何函数(包括const函数)中修改,这种变量声明为mutable变量
可变数据成员永远不能为const

默认构造函数:调用时无需实参的构造函数
合成的默认构造函数:只有当一个类没有定义构造函数,编译器才会自动生成一个默认构造函数
建议:类通常应定义一个默认构造函数
默认构造函数可以带有默认形参

隐式类类型转换:可以用单个实参来调用的构造函数定义了从形参类型到该类类型的一个隐式转换
如:
MyClass(const std::string&=""); //默认构造函数
MyClass mc = "my class"; //将"my class"字符串隐式转换为MyClass类型对象
使用explicit来抑制隐式转换
explicit MyClass(const std::string&="");
MyClass mc = "my class"; //error,不能隐式转换
建议:通常对于单形参的构造函数应该定义为explicit,避免隐式转换而带来错误

友元:允许特定的非成员函数访问一个类的私有成员,同时仍然阻止一般的访问,则这种函数被称为类的友元,友元的声明使用关键字friend
建议:通常,将友元声明成组地放在类定义的开始或结尾
分享到:
评论

相关推荐

    C++基础知识梳理

    一开始学习C/C++的时候会以为,这个语言很严谨,在编码上不容许有任何闪失,不然编译肯定不通过。但其实和后续的C#和java等等语言相比,C/C++的规范还是非常非常宽松的。至少在指针类型各种转换中就能体现出来,让...

    C++基础入门.md

    C++基础入门.md、C++基础入门.md、C++基础入门.md 一提到这个名字相信有需要的小伙伴瞬间就能明白了,打开的话用typora这个软件,特别好,不认识名字的朋友也不要紧 这就是一个C++编程文档,很实用的,里边有一些C++...

    c++基础程序文件

    c++基础学习,可以促进对c++编辑软件的认识,增强学习的兴趣

    C++程序设计基础.pdf

    Visual C++常规编程技术和应用程序基础的介绍又有图形用户界面 ActiveX 控件多媒体数据库等高级话题的介绍通过这些内容的学 习会使用户充分领略到Visual C++事件驱动可视编程技术的威力所在 书中内容实例丰富讲解...

    C++入门基础_30分钟入门教程.

    C++是一门应用非常广泛的计算机程序设计语言。它既支持过程化程序设计,也支持面向对象程序设计。从操作系统、设备控制到数据库、网络...通过本章的学习,读者可以为后面的学习打好基础,并且可以对C++有一个基本认识。

    C++入门到精通(深入C++系列)

    在所有的编程语言中C++可以说是最为复杂的它既是一门传统的编程语言也是...基础设施C++经历了多年的发展终于有了一个相对稳定的版本所以我们应该用一种新的眼光来看待C++ 而不再简单地把C++认为是C 语言的超集本书正是...

    C++拔尖总结-多线程,维护,变量,函数,类,STL,网络基础,认识类,设计类,模板编译,linux结合,makefile等等

    C++拔尖总结——多线程,维护,变量,函数,类,STL,网络基础,认识类,设计类,模板编译,linux结合,makefile等等,适用于已就业1-2年的像突破瓶颈期的新成员C++高级总结

    C++程序设计(谭浩强)

    《中国高等院校计算机基础教育课程体系规划教材:C++程序设计(第2版)》作者谭浩强深入调查了大学的程序设计课程的现状和发展趋势,参阅了国内外数十种有关C++的教材,认真分析了读者在学习中的困难和认识规律,设计了...

    C++基本知识详细介绍

    C++常识,可以对c++有基本认识,C++类。继承、多太、虚拟函数。。。。的详细介绍

    《谭浩强C++程序设计》

    《C++程序设计》作者深入调查了我国大学的程序设计课程的现状和发展趋势,参阅了国内外数十种有关C++的教材,认真分析了学习者在学习过程中遇到的困难,研究了初学者的认识规律。在本书中做到准确定位,合理取舍...

    C++单链表实现源码

    // 网上关于这方面的挺多...// 也没用类,所以比较适合有一点C++语言基础入门者,但可移植不够.有什么bug的话,欢迎指出。 // 或有什么问题也可以联系我。 // made by virgil (2009.2.8) // MSN:hangyu_628@hotmail.com)

    C++入门到精通

    同时C++标准也统一了C++标准库为C++用户提供了最为基本的基础设施C++经历了多年 的发展终于有了一个相对稳定的版本所以我们应该用一种新的眼光来看待C++ 而不再 简单地把C++认为是C 语言的超集本书正是新版本C++的...

    C++程序设计语言 C++名家对话

    C++名家对话,是一本讲述C++程序设计语言的绝对佳作。对于有一定的C++程序设计语言基础的专业人员,要想提高对C++的认识和理解,强烈推荐。

    C++面向_对象程序设计基础

    C++程序设计基础知识,对C++有很好的认识。

    C++程序员快速学习C#

    随着.NET的深入人心,作为一个程序员,当然不能在新技术面前停而止步,面对着c++在.net中的失败,虽然有一丝遗憾,但是我们应该认识到,对于c++其实就不应该对其在.net中的表现有太大的奢望,因为毕竟它并不是一个.net下的...

    工资管理系统C++

    基础上,在完成C++面向对象程序设计各部分实验的基础上,通过自学MFC,掌握一种可视化编程的方法,并通过实践加深对可视化编程与C++面向对象程序设计语言特点的认识与理解。同时,可以提高运用C++编程语言解决实际...

    C++ 初学者精品教程

    java程序员转C++开发的基础教程电子文档,本人亲身使用过,感觉不错,通过该文档,你能多c++有个基础的认识。话一天学完C++不是难事。

    白话c++.rar

    通俗而有趣的c++编程语言初级教程,非常适合初学者认识和掌握c++的基础概念和操作

    Visual C++ 6.0 编程实例与技巧

    常规编程技术和应用程序基础的介绍又有图形用户界面 ActiveX 控件多媒体数据库等高级话题的介绍通过这些内容的学 习会使用户充分领略到 Visual C++ 事件驱动可视编程技术的威力所在 书中内容实例丰富讲解...

Global site tag (gtag.js) - Google Analytics