从其他语言快速入门c++刷题

参考柳婼的《从放弃C语言到使用C++刷算法的简明教程v4.7》,黑马,C语言中文网教程,及一些经验
从其他语言(C,Java)快速入门c++刷题

从其他语言快速入门c++刷题_第1张图片

不同知识点

#include

using namespace std;

1.常量

从其他语言快速入门c++刷题_第2张图片

2.数据类型

类型 关键字
布尔型 bool
字符型 char
整型 int
浮点型 float
双浮点型 double
无类型 void
宽字符型 wchar_t

一些基本类型可以使用一个或多个类型修饰符进行修饰:

  • signed
  • unsigned
  • short
  • long

字符‘ ’ (占用1个字节;字符型变量并不是把字符本身放到内存中存储,而是将对应的ASCII编码放入到存储单元)

变量类型

变量其实只不过是程序可操作的存储区的名称。C++ 中每个变量都有指定的类型,类型决定了变量存储的大小和布局,该范围内的值都可以存储在内存中,运算符可应用于变量上。

类型 描述
bool 存储值 true 或 false。
char 通常是一个字符(八位)。这是一个整数类型。
int 对机器而言,整数的最自然的大小。
float 单精度浮点值。单精度是这样的格式,1位符号,8位指数,23位小数。从其他语言快速入门c++刷题_第3张图片
double 双精度浮点值。双精度是1位符号,11位指数,52位小数。从其他语言快速入门c++刷题_第4张图片
void 表示类型的缺失。
wchar_t 宽字符类型。

C++ 也允许定义各种其他类型的变量,比如枚举、指针、数组、引用、数据结构、类等等,这将会在后续的章节中进行讲解。

字符串

  • char str[]=" "

  • string str2=""( 头文件:#include)

    string(小写) 本质是一个类, & char *

    从其他语言快速入门c++刷题_第5张图片
    操作符两端字符串,按字典序大小的比较==,!=,<,>,<=,>=。

    从其他语言快速入门c++刷题_第6张图片

    追加 += append()

    查找、替换int find(),rfind()

    比较 s1.compare(s2) >0 s1>s2

    存取:单个字符

    从其他语言快速入门c++刷题_第7张图片

    修改 str[0]=‘x’; str.at(1)=“x”;

    插入 str.insert(1,“111”)删除 erase(起始1,删个数3)

    返回子串str.substr(1,3个)

    从其他语言快速入门c++刷题_第8张图片

    判断字符是字母
    #include 
    #include 
    using namespace std;
    int main() {
    	char c;
        cin >> c;
    	if ( isalpha(c) ) {
    		cout << "c is alpha" ;
    	}
    	return 0 ;
    }
    

    从其他语言快速入门c++刷题_第9张图片

3.输入输出从其他语言快速入门c++刷题_第10张图片

cin读取数据,以空格、tab或换行作为分隔符, 若题目中有格式化要求输入则需使用scanf.

从其他语言快速入门c++刷题_第11张图片

4.运算符

整/整=整

a++,a–值不变

5.分文件编写从其他语言快速入门c++刷题_第12张图片

.h

#include

using namespace std;

void swap(int a);

.cpp

#include

using namespace std;

#include “swap.h”

void swap(int a){ }

6.指针 &取地址 野指针

与c区别结构体不用写struct

地址传递 printStu(&s);

值传递 prinStu(s);

面向对象

1.内存分区模型

C++程序在执行时,将内存大方向划分为4个区域

代码区
存放函数体的二进制代码,由操作系统进行管理的

共享,只读

全局区:
存放全局变量,静态变量,常量

os释放


程序运行后

栈区:

存 局部变量,形参,不要返回局部变量地址

由编译器自动分配释放,存放函数的参数值,局部变量等

从其他语言快速入门c++刷题_第13张图片

堆区:new delete[] arr

用指针接收返回的地址,指针(本质是局部变量)

由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收

内存四区意义:
不同区域存放的数据,赋予不同的生命周期,给我们更大的灵活编程

2.引用

从其他语言快速入门c++刷题_第14张图片

作用: 给变量起别名
语法: 数据类型 &别名=原名

本质: 指针常量

引用必须初始化,不可更改

从其他语言快速入门c++刷题_第15张图片 从其他语言快速入门c++刷题_第16张图片

注意区别:三种传递方式

从其他语言快速入门c++刷题_第17张图片

从其他语言快速入门c++刷题_第18张图片

3.函数提高

默认参数 int fun(int a**,int b=20**){} 放最右

占位参数 int fun(int a,int){}

函数重载 除返回值不同

  1. 默认参数二异性报错
  2. 引用void f(int &a)/ void f (const int &a)

4.类和对象

class Student{
public:
    string name;
    void showName(){

    }
}

struct 默认权限public & class 默认private

circle.h

#pragma once  防止头文件重复包含
#include
using spacename std;
#include "point.h"

class Circle{
public:
    void setR(int r);
    Point getCenter();
    
private:
    int R;
    Point c;
}

circle.cpp

#include "circle.h"

void Circle::setR(int r){   //::全局作用域限定
    r=r;
}
Point Circle::getCenter(){
    return r;
}

main.cpp

#include
using spacename std;
#include "point.h"
#include "circle.h"

void isInCircle(){
    
}
int main(){
    
}

对象初始化和清理(构造函数,~类名(无参数){}析构函数)编译器自动调用

拷贝构造函数 Person(const Person &p){ age=p.age; }

//调用
//1.括号法  Person p1();错的,默认为函数声明
Person p1;
Person p2(10);
Person p3(p2);
//2.显示法  Person(10);匿名对象
Person p1;
Person p2=Person(10);有参构造
Person p3=Person(p2);拷贝构造 ,不能匿名
//4.隐式转化法
Person p4=10;  //相当于 Person p4=Person(10);
Person p5=p4;

C++中拷贝构造函数调用时机通常有三种情况:

  • 使用一个已经创建完毕的对象来初始化一个新对象

  • 值传递的方式给函数参数传值

  • 以值方式返回局部对象

默认情况下,C++编译器至少给一个类添加3个函数

1.默认构造函数(无参,函数体为空)

2.默认析构函数(无参,函数体为空)

3.默认拷贝构造函数,对属性进行值拷贝

构造函数调用规则如下:

  • 如果用户定义有参构造函数,c++不在提供默认无参构造,但是会提供默认拷贝构造
  • 如果用户定义拷贝构造函数,C++不会再提供其他构造函数

浅拷贝:简单的赋值拷贝操作,Q堆区内容重复释放
深拷贝:在堆区重新申请空间,进行拷贝操作

从其他语言快速入门c++刷题_第19张图片

初始化列表 构造函数():属性1(值1)

Person(int a,int b) : m_A(a),m_B(b){}

类对象作为类成员

在C++中,类内的成员变量和成员函数分开存储,只有非静态成员变量才属于类的对象上

空指针访问成员函数

泛型编程,stl见下一篇

stl刷题必备知识点

补充c++11从其他语言快速入门c++刷题_第20张图片

从其他语言快速入门c++刷题_第21张图片
从其他语言快速入门c++刷题_第22张图片从其他语言快速入门c++刷题_第23张图片

你可能感兴趣的:(算法,c++,算法)