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

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

image-20220302220833387

不同知识点

#include

using namespace std;

1.常量

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位小数。img
double双精度浮点值。双精度是1位符号,11位指数,52位小数。img
void表示类型的缺失。
wchar_t宽字符类型。

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

字符串
  • char str[]=" "

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

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

    image-20220303094806119
    操作符两端字符串,按字典序大小的比较==,!=,<,>,<=,>=。

    image-20220208183229201

    追加 += append()

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

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

    存取:单个字符

    image-20220208183953749

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

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

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

    image-20220208184520481

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

    image-20220303145341263

3.输入输出image-20220302221201576

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

image-20220302221355076

4.运算符

整/整=整

a++,a–值不变

5.分文件编写image-20220302221533752

.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释放


程序运行后

栈区:

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

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

image-20220124221025963

堆区:new delete[] arr

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

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

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

2.引用

image-20220302222515789

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

本质: 指针常量

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

image-20220125114056003 image-20220125114108586

注意区别:三种传递方式

image-20220125115730947

image-20220125121132188

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<iostream>
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<iostream>
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堆区内容重复释放
深拷贝:在堆区重新申请空间,进行拷贝操作

image-20220125143048080

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

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

类对象作为类成员

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

空指针访问成员函数

泛型编程,stl见下一篇🤩

stl刷题必备知识点

补充c++11image-20220303105916246

image-20220303105933267
image-20220303110136219image-20220303110154152

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值