![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++笔记
文章平均质量分 67
马大哈先生
新人一枚,请大家多多关照!
展开
-
C/C++练习(一)——将句子倒序输出:输入“how are you"倒序输出"you are how"
//输入“how are you"倒序输出"you are how"#include <iostream>#include <string>using namespace std;int main(){ string str; //字符串 int ptr[100]; while (getline(cin, str)) {...原创 2020-02-19 09:59:00 · 2619 阅读 · 0 评论 -
C++笔记(六)——引用传递和指针传递的区别
一、引用的概念引用:引入了对象的一个同义词。相当于给变量取别名。它在逻辑上不是独立的,它的存在具有依附性,所以引用必须在一开始就被初始化,而且其引用的对象在其整个生命周期中是不能被改变的(自始至终只能依附于同一个变量)。定义引用的表示方法与定义指针相似,只是用&代替了*。例如:Point pt1(10,10);Point &pt2=pt1; //定义了pt2为pt1的...原创 2018-10-15 09:36:22 · 433 阅读 · 2 评论 -
C++笔记(十二)——头文件(.h)和源文件(.cpp)写法
用C++编写比较大型的项目时,文件的分割管理确实确实是非常必要的 。下面就非常简洁明了地谈谈头文件(.h)和源文件(.cpp)应该怎么写。 在.h文件中,主要是进行类的定义,包括数据成员和函数成员的声明(成员函数的定义也可以在这个文件中进行),一般类的数据成员被声明为私有的,函数成员被声明为公有的。在.cpp文件中进行变量的赋值和函数的实例化。细分的话,通常main...转载 2018-10-15 10:43:08 · 16682 阅读 · 1 评论 -
C++笔记(二)——预处理器指示符及条件指示符(头文件保护符)
一、预处理指示符的作用 头文件通过include预处理器指示符而成为我们程序的一部分。预处理器指示符用“#”号标识。处理这些指示符的程序被称作预处理器。 预处理可以缩短源文件中的代码量,使用这一句话来代替头文件中的全部代码,相当于把头文件中的内容全部拷贝过来。因此可能会出现源文件中引用了某头文件后,其引用的其他头文件中又引用了该头文件,造成一个头文件被多...原创 2018-09-30 09:31:12 · 627 阅读 · 1 评论 -
C++笔记(八)——类2:构造函数和析构函数及拷贝构造函数
每个类都具有构造函数和析构函数。其中,构造函数在定义对象时被调用,析构函数在对象释放时被调用。如果用户没有提供构造函数和析构函数,系统将提供默认的构造函数和析构函数。一个有着层次结构的类群组,当派生类的对象诞生的时候,构造函数的执行是由最基类至最尾端派生类;当对象要毁灭前,析构函数的执行则是反其道而行。一、构造函数1.1 构造函数的定义 构造函数是一个与...原创 2018-10-16 10:09:30 · 1167 阅读 · 0 评论 -
C++笔记(十六)——静态类成员和动态类成员
一、类的静态成员变量 静态类成员是在类成员定义前使用static关键字标识。在定义静态数据成员时,通常需要在类内声明,在类体外部对静态数据成员进行初始化。对于静态成员来说,不仅可以通过对象访问,还可以直接使用类名访问。class CNote{public: static unsigned int m_Price; //在类内声明};unsigned in...原创 2018-10-17 09:49:45 · 3343 阅读 · 0 评论 -
C++笔记(十四)——this指针
this指针的原理: this指针是一个隐含的指针,它是指向对象本身的,代表了对象的地址。一个类所有的对象调用的成员函数都是同一个代码段,那么,成员函数又是怎么识别属于不同对象的数据成员呢?原来,在对象调用pt.input(10,10)时,成员函数除了接收2个实参外,还接收到了pt对象的地址,这个地址被一个隐含的形参this指针所获取,它等同于执行this =&pt。所...原创 2018-10-17 15:28:54 · 235 阅读 · 0 评论 -
C++笔记(十五)——类 :对象数组
一、定义 对象数组是指每一个数组元素都是一个单独的对象,即:若一个类有若干个对象,我们把这一系列的对象用一个数组来存放。demo:对象数组的使用Object_Array.cpp#ifndef __OBJECT_ARRAY_H__#define __OBJECT_ARRAY_H__class CData{private: int m_x;public:...原创 2018-12-13 08:53:27 · 965 阅读 · 0 评论 -
C++笔记(十七)——类对象作为成员
一、定义: 在类定义中定义的数据成员一般都是基本的数据类型。但是类中的成员也可以是对象,叫做对象成员。使用对象成员时需要注意的问题是构造函数的定义方式,及类内部对象的初始化问题。 含有对象成员的类,其构造函数和不含对象成员的构造函数有所不同,例如有以下的类:class CXaa{ 类名1 成员名1; //即成员名1是在类1中定义的 类名2 成员名2; //成...原创 2018-12-17 17:25:03 · 5507 阅读 · 1 评论 -
C++笔记(十八)——友元
一、友元的产生条件:类的主要特点之一是数据隐藏,即类的私有成员只能在类定义的范围内使用,也就是说私有成员只能通过它的成员函数来访问。 但是,有时候需要在类的外部访问类的私有成员。为此,就需要寻找一种途径,在不放弃私有数据安全性的情况下,使得类外部的函数或类能够访问类中的私有成员——友元。注:友元相当于一扇通往私有成员的后门 友元是外部的函数,它可分为:友元函数,友元成员,友元类二、...原创 2018-12-18 14:39:44 · 159 阅读 · 0 评论 -
C++笔记(七)——类3:const修饰成员函数
一、const修饰的成员函数 由于成员函数可以任意访问类内的任何数据成员,但当我们不愿意让成员函数修改数据成员时,我们可以用const修饰类的成员函数,一般形式为:class CName{private: .......public: (type)function_name(..) const //函数体内部不会对成员数据进行写操作(但可以读) ...原创 2018-12-12 16:29:21 · 221 阅读 · 0 评论 -
C++笔记(十九)——运算符重载函数
一、作用:使复杂函数的理解更直观,程序更加简单易懂二、运算符重载函数的形式是:返回类型 operator 运算符符号(参数说明){ //函数体的内部实现}void operator +(Test&, Text&){ //函数体的内部实现}至少有一个参数是自定义类型(数组,类) 如果是单目运算符,只传一个参数 如果是双目运算符,传两个参数* ...原创 2018-12-19 10:37:06 · 345 阅读 · 0 评论 -
C++笔记(十一)——类7:派生、类的继承、多重继承、成员访问操作符(./->)
一、类的继承 对我们来说可以根据物体的形状把物体归为一类,比如矩形是形,椭圆形是形,三角形也是形。人们习惯把相同的性质抽取出来,成立一个类,再根据细节的不同,衍化出不同的小类,这些小类就是派生类。比如:关于形状,可以有下面的类层次结构,其中CShape是一个模糊称呼,涵盖了所有的形状,它可以描述这些形状的颜色,然后再细分成各个子类: ...原创 2018-10-18 09:50:12 · 285 阅读 · 0 评论 -
C++笔记(五)——inline内联函数
内联扩展是用来消除函数调用时的时间开销。它通常用于频繁执行的函数。 一个小内存空间的函数非常受益。编译器可以决定哪些函数内联 。 程序员很少或没有控制哪些只能是内联的,哪些不是。 给这种控制程度,作用是程序员可以选择内联的特定应用 。一、预处理宏: 介绍内联函数之前,有必要介绍一下预处理宏。内联函数的功能和预处理宏的功能相似。相信大家都用过预处理宏,我们会经常...转载 2018-10-11 15:27:35 · 188 阅读 · 0 评论 -
C++笔记(一)——C++的基本介绍及构成
C++相比于C的优点主要体现在封装性、继承性(Inheritance)、和多态性。1)封装性:把数据与操作数据的函数组织在一起,不仅使程序结构更加紧凑,并且提高了类内部数据的安全性; 2)继承性:增加了软件的可扩充性和代码重用性; 3)多态性:一条指令控制不同子类实现不同的功能。使设计人员在设计程序时可以对问题进行更好的抽象,有利于代码的维护和可重用。C++笔记(八)——类...原创 2018-07-22 20:01:03 · 540 阅读 · 1 评论 -
C++笔记(七)——类1:定义、命名规则、类成员函数的定义方式(含字符串输出举例)、对象的定义及引用
在基于对象的程序设计方法中,我们通过一组数据抽象来建立问题的模型,在C++中我们把这些抽象称为类。比如图书馆资料登记/借阅系统就是由类的抽象实例(比如书名、借阅者、还书时间等)之间的相互作用表现出来,以此来表示出图书馆的抽象概念。 一、类的定义 在C++中,类的定义方式与结构体类似,只是使用class关键字定义。通常先写接口再实现。所谓的接口就是类头加“{}”,实...原创 2018-08-19 10:55:37 · 8919 阅读 · 1 评论 -
C++笔记(六.五)——函数、函数重载
一、函数的组成 通常情况下,函数包括返回值类型、函数名、参数列表和函数体4部分。其中,返回值类型、函数名和参数列表构成了一个函数原型,而函数体表示函数的实现。 返回值类型 函数名(参数列表) { 函数体; } 通常,函数名可以是任何合法的标识符。 函数的参数列表是可选的,若函数不需要参数,则可以省略参数列表,...原创 2018-08-17 15:28:31 · 248 阅读 · 0 评论 -
C++笔记(四)——作用域
一、局部作用域 局部作用域描述的是函数体中变量、常量等对象的作用范围。每一个函数都有一个独立的局部作用域,在函数体中定义的变量、常量,对外部函数是不可见(不可用)的,因为它处于函数的局部作用域中。 1.对于函数体中出现的复合语句,也有其独立的局部作用域,在其中定义的对象,复合语句之外是不能访问的。 2. 对于处于同一局部作用域的对...原创 2018-08-17 15:44:33 · 284 阅读 · 0 评论 -
c++中的指数函数怎么写
C里面函数原型是double pow(double,double),需要包含math.h。C++里面推荐这样用(包含ISO C++从C继承的数学函数库,但头文件不带.h扩展名且前面加c,需要用namespace std,函数原型与C中相同):#include<cmath> //添加需要包含的头文件...using namespace std;int main(){ ...转载 2018-09-06 10:30:00 · 43533 阅读 · 3 评论 -
C++笔记(十三)—— typedef用法小结
一、四个用途:用途一: 定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如:我们要声明两个指针变量,则char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针,和一个字符变量; 以下则可行:typedef char* PCHAR; // 一般用大写 PCHAR pa, pb; // 可行,同时声...转载 2018-10-11 09:38:42 · 205 阅读 · 0 评论 -
C++笔记(九)——类5:成员函数的重载、覆盖、隐藏
C++ 类层次中的同名函数,有三种关系:重载(overload) 重写、覆盖(override) 隐藏(hide,oversee)一、重载c++函数重载相同的范围(在同一个类中) 相同的函数名字 不同的参数列表,与返回值类型没有关系 virutal关键字可有可无作用:用来实现功能类似而所处理的数据类型不同的问题。方便了程序员可以根据不同的参数个数,顺序,类型,自动匹配方法...转载 2018-10-11 11:26:18 · 317 阅读 · 0 评论 -
C++笔记(十)——类6:多态
一、多态的概念: 用相同的指令可以调用不同的函数。即对不同类的对象发出相同的消息将会有不同的行为。 在了解了虚函数的意思之后,再考虑什么是多态就很容易了。看11.1代码//例11.1class A{public: virtual void foo() { cout << "A::foo() iscalled" << e...原创 2018-10-11 15:00:47 · 154 阅读 · 0 评论 -
C++笔记(八)——类4:虚函数
一、虚函数 虚函数的标志是“virtual”关键字。即: virtual 类型 函数声明 { }; 注:等于、不等于操作符和size()成员函数的实现对于其应用的数组类型来说是独立的。因此不把它声明成Virtual 虚函数(virtual function) 是C++中用于实现多态(polymorphism)的机制。核心理念就是通过...原创 2018-10-11 15:01:45 · 395 阅读 · 0 评论 -
C++笔记(三)——命名空间
定义和使用命名空间 在一个应用程序的多个文件中可能会存在同名的全局对象,这样会导致应用程序的链接错误。使用命名空间是消除命名冲突的最佳方式。命名空间的定义格式为: namespace 名称 { 常量、变量、函数等对象的定义 } 1. 如果使用命名空间中的对象,需要在对象前使用命名空间名作为前缀。 ...转载 2018-07-25 14:58:35 · 600 阅读 · 0 评论