| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> c++primer类学习笔记 -> 正文阅读 |
|
[C++知识库]c++primer类学习笔记 |
@TOC 定义类我们暂时先用struct来定义类,到类的封装封装再来讲struct和class的区别。
成员和非成员函数数据成员数据成员即定义在类内的对象。可以内置类型如int,double;或是其他的类如vector等。在例子中如a. 成员函数成员函数必须在类内声明,可在类内或内外定义。
我可以看出成员函数的定义和普通的函数定义没有什么区别。 this奇怪的是,我们并没有传入参数,那么它是怎么得到a的值呢。我们使用了点运算符来调用它,当我们调用成员函数时,实际上是在替某个对象调用它。 const我们可以看到例中,在形参圆括号后有一个const,实际上这个const是修饰this的,当我们不需要修改this的成员时,就可以加上const避免不必要的修改。 在外部定义成员函数我们也可以将成员函数的声明写类的内部,在外部进行定义。
值得注意的,我们必须显示的说明这个函数是exmple类的成员函数,当我们使用exmple::content时,作用域就变更成类的。 非成员函数非成员函数的声明和定义都在类的外部。非成员函数大多作为接口存在,但它们不属于类本身。
这个非成员函数可以读入一个输入流的引用和一个example的引用,并读入一个数字赋值给example的a成员。 构造函数我们知道类中可以存在很多的数据成员,我们必须知道如何初始化它们。构造函数就是用来初始化数据成员的。无论何时,只要类的对象被创建,就会执行构造函数。
构造函数没有返回值,它可以接受参数。:后就可以使用形参来对数据成员进行初始化。构造函数的函数体一般为空。
但是没有必要 默认构造函数例子
当我们不提供任何参数时,就会执行默认构造函数。
合成的默认构造函数当类内没有默认构造函数时,编译器就会自行合成一个。合成的默认构造函数会对没有类内初值的数据对象进行默认初始化;而我们知道内置类型的默认初始化后的值一般是未定义的。 在以下三种情况下不能依赖合成的默认构造函数
2.当类内存在另一个没有默认构造函数的类时。此时,当前类不知道如何初始化它的类数据成员,所以无法使用合成的默认构造函数。 拷贝,赋值,析构除了定义类的对象如何初始化之外,类还有控制拷贝,赋值和销毁对象时发生的行为。当我们不主动定义这些操作时,则编译器会替我们合成。 类的封装我们可以使用访问说明符来对类进行封装,隐藏类的内部实现。 class和structclass和struct都可以用于定义类类型; public和privatepublic:定义在public之后的成员可在整个程序中访问。
友元类可以允许其他类或函数访问它的非公有函数,方法是令其他类或函数成为它的友元。
值得一提的是友元没有传递性,a是b的友元,b是c的友元,此时a并不是c的友元. 类的作用域每一个类都会定义它自己的作用域,在类的作用域之外,普通的数据和函数成员只能有对象,引用或者指针使用成员访问运算符来访问。对类类型成员则使用作用域运算符来访问。
定义在类外部的成员每一个类都会定义它自己的作用域,这样不难理解为什么在类外定义一个成员函数需要使用作用域描述符。 类的其他特性可变成员一个可变数据成员永远不会是const,即使它是const对象的成员
静态成员静态成员只存在一个且被所有拥有它的类对象共享,但一个static成员不与任何对象绑定在一起,作为结果,静态成员函数无法声明成const的且我们也不能在static函数体内使用this指针。 |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/27 4:51:39- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |