IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: 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++复习 -> 正文阅读

[C++知识库]C++复习

Linux命令:

nano: nano 1.cpp 创建文件

rm?:? ?删除文件? ? rm 1.cpp

mkdir :?创建文件夹? ?mkdir? ?test

一、面向对象程序设计

面向对象程序设计(Object-Oriented?Programming,OOP)是一种新的程序设计范型。程序设计范型是指设计程序的规范、模型和风格,它是一类程序设计语言的基础。

面向过程程序设计范型是指使用较广泛的面向过程性语言,其主要特征是:程序由过程定义和过程调用组成(简单来说,过程就是程序执行某项操作的一段代码,函数就是最常见的过程)。

面向对象程序的基本元素是对象,面向对象程序的主要结构特点是:第一,程序一般由类的定义和类的使用两部分组成;第二,程序的一切操作都是通过向对象发送消息来实现的,对象接收消息后,启动有关方法完成相应的操作。

?¨è?é??¥????è?°

?:类是具有相同的数据和相同的操作的一组对象的集合。

对象:描述其属性的数据以及对这些数据施加的一组操作封装在一起构成的统一体。对象可认为是 数据+操作。

消息传递:对象之间的交互。

面向对象程序设计的基本特征:抽象、封装、继承、多态

二、C++基础

2.1?C++的产生和特点

C++?是美国贝尔实验室的Bjarne Stroustrup博士在C语言的基础上,弥补了C语言存在的一些缺陷,增加了面向对象的特征;于1980年开发出来的一种面向过程性和面向对象性相结合的程序设计语言。最初他把这种新的语言称为“含类的C”,到1983年才取名C++。

相比较C语言,C++的主要特点是增加了面向对象机制。

2.2?一个简单的C++示例程序。

#include <iostream>   //编译预处理命令
using namespace std;    //使用命名空间

int add(int a, int b);       //函数原型说明

int main()  //主函数
{
	int x, y;
	cout << "Enter two numbers: " << endl;
	cin >> x;
	cin >> y;
	int sum = add(x, y);
	cout << "The sum is : " << sum << '\n';
	return 0;
}

int add(int a, int b) //定义add()函数,函数值为整型
{
	return a + b;
}

2.3?C++在非面向对象方面对C语言的扩充

输入和输出

cin

在默认情况下,运算符“>>”将跳过空白符,然后读入后面与变量类型相对应的值。因此,给一组变量输入值时可用空格符、回车符、制表符将输入的数据间隔开。

当输入字符串(即类型为string的变量)时,提取运算符“>>”的作用是跳过空白字符,读入后面的非空白字符,直到遇到另一个空白字符为止,并在串尾放一个字符串结束标志‘\0’。

C++允许在代码块中的任何地方声明局部变量。

const修饰符

在C语言中,习惯使用#define来定义常量,例如#define PI 3.14,C++提供了一种更加灵活、更加安全的方式来定义常量,即使用const修饰符来定义常量。例如const?float?PI=3.14;

const?可以与指针一起使用,他们的组合情况复杂,可以归纳为三种情况:指向常量的指针、常指针和指向常量的常指针。

指向常量的指针:一个指向常量的指针变量

const char* pc = "abcd";
该方法不允许修改指针所指的变量,即:
    pc[3] = 'x';  是错误的
但是,由于pc是一个指向常量的普通指针变量,不是常指针,因此可以改变pc所指的地址,例如,
    pc = "ervfs";
该语句让pc指向了另一个字符串,改变了pc的值,即pc存储的地址改变了。

常指针:将指针变量所指的地址声明为常量

char* const pc = "abcd";
创建一个常指针,一个不能移动的固定指针,可更改内容,如
    pc[3] = 'x';
但不能改变地址,如
    pc = "dsff";不合法

指向常量的常指针:这个指针所指的地址不能改变,它所指向的地址中的内容也不能改变。

const char* const pc = "abcd";
内容和地址都不能改变

说明:

1、如果用const定义整形常量,关键字可以省略。即const?int bufsize = 100与const bufsize = 100等价;

2、常量一旦被建立,在程序的任何地方都不能再更改。

3、与#define不同,const定义的常量可以有自己的数据类型。

4、函数参数也可以用const说明,用于保证实参在该函数内不被改动。

void型指针

void通常表示无值,但将void作为指针的类型时,它却表示不确定的类型。这种void型指针是一种通用型指针,也就是说任何类型的指针值都可以赋给void类型的指针变量。

需要指出的是,这里说的void型指针是通用指针,是指它可以接受任何类型的指针的赋值,但是对已获值的void型指针,对它进行再处理,如输出或者传递指针值时,则必须再进行显式类型转换,否则会出错。

void* pc;
int i = 123;
char c = 'a';
pc = &i;
cout << pc << endl;//输出指针地址
cout << *(int*)pc << endl; //输出值123
pc = &c;
cout << *(char*)pc <<endl;//输出字符‘a’

内联函数:

在函数名前面加上关键字inline,该函数就被声明?为内联函数。每当程序中出现对该函数的调用时,C++编译器使用函数体中的代码插入到调用该函数的语句之处,同时使用实参代替形参,以便在程序运行时不再进行函数调用。引入内联函数主要是为了消除调用函数时的系统开销,以便提高运行速度。

说明:

内联函数在第一次被调用之前必须进行完整的定义,否则编译器将无法知道应该插入什么代码。

在内联函数体内一般不能含有复杂的控制语句,如for语句和switch语句等

使用内联函数是一种空间换时间的措施,如内联函数较长,较复杂且调用较为频繁时,不建议使用。

使用内联函数代替宏定义,可以消除宏定义的不安全性。

#include <iostream>
using namespace std;

inline double circle(double r) //内联函数
{
    double PI = 3.14;
    return PI * r * r;
}

int main()
{
    for (int i = 1; i <= 3; i++)
    {
        cout << "r = " << i << " area = " << circle(i) << endl;
    }
    return 0;
}

带有默认参数的函数

当进行函数调用时,编译器按从左到右的顺序将实参和形参结合,若未指定足够的实参,则编译器按照顺序用函数原型中的默认值连弥补所缺少的实参。

void init(int x = 5, int y = 10);
init (100, 19); //100, 19
init(25);       //25, 10
init();         //5,10

在函数原型中,所有取默认值的参数都必须出现在不取默认值的参数的右边。

int fun(int a, int b, int c = 111);

在函数调用时,若某个参数省略,则其后的参数皆应该省略而采取默认值。不允许某个参数省略后,再给其后的参数指定参数值。

函数重载

在C++中,用户可以重载函数。这意味着,在同一作用域内,只要函数参数的类型不同,或者参数的个数不同,或者二者兼而有之,两个或者两个以上的函数可以使用相同的函数名。

#include <iostream>
using namespace std;

int add(int x, int y)
{
    return x + y;
}

double add (double x, double y)
{
    return x + y;
}

int add(int x, int y, int z)
{
    return x + y + z;
}

int main()
{
    int a = 3, b = 5, c = 7;
    double x = 10.334, y = 8.90003;
    cout << add(a,b) << endl;
    cout << add(x,y) << endl;
    cout << add(a,b,c) << endl;
    return 0;
}

说明:

调用重载函数时,函数返回值类型不在参数匹配检查之列。因此,若两个函数的参数个数和类型都相同,而返回值类型不同,则不允许重载。

int mul(int x, int y);
double mul(int x, int y);

函数的重载与带默认值的函数一起使用时,可能引起二义性。

void Drawcircle(int r = 0, int x = 0, int y = 0);
void Drawcircle(int r);
Drawcircle(20);

在调用函数时,如果给出的实参和形参类型不相符,C++的编译器会自动的做类型转换工作。如果转化成功,则程序继续执行,在这种情况下,有可能发生不可识别的错误。

void fun(int x);
void fun(long x);
fun(20.83);

?作用域标识符"::"

通常情况下,如果有两个同名变量,一个是全局的变量,另一个是局部的变量,那么局部变量在其作用域内具有较高的优先权,它将屏蔽全局变量。

如果希望在局部变量的作用域内使用同名的全局变量,可以在该变量前面加上“::”,此时::value代表全局变量value,"::"称为作用域标识符。

#include <iostream>
using namespace std;

int Value; //定义全局变量Value

int main()
{
    int Value; //定义局部变量Value
    Value = 100;
    ::Value = 1000;
    cout << "local Value :" << Value << endl;
    cout << " global Value :" << ::Value << endl;
    return 0;
}

强制类型转换:

可用强制类型

三、类和对象(一)

3.1?类的构成

类声明中内容包括数据和函数,分别称为数据成员和成员函数,数据成员和成员函数又可以分为公有、保护和私有三种。

class 类名{
    public:
        公有数据成员;
        公有成员函数;
    protected:
        保护数据成员;
        保护成员函数;
    private:
        私有数据成员;
        私有成员函数;

};

如成绩类:

class Score{
    public:
        void setScore(int m, int f);
        void showScore();
    private:
        int mid_exam;
        int fin_exam;
};

四、类和对象(二)

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-11-18 11:01:39  更:2021-11-18 11:03:03 
 
开发: 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年11日历 -2024/11/24 7:16:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码