C++基本语法特性

C+±基本语法

一、语言的基本特性

  • ​ C++语言存在多个版本,C11(第三个语言基本特性) 、C17(第五个语言基本特性) 、C20 等 ,其中大部分标准的形式是C11,后续的版本在此基础之上增加了一些新特性

  • C++语言的特性:封装、继承、多态、抽象

  • 标准库的重要组成部分:核心语言库、C++标准库、标准模板库(STL)

##二、 语言基本数据类型
整型 : int long short
字符型: char
浮点型: float double
布尔型: bool
无类型: void
宽字符型: wchar_t (该类型的实际转换形式) typedef short int wchar_t;
数据类型修饰符:signed(有符号) unsigned(无符号) long (长精度)

​ 数据类型占用字节

在这里插入图片描述

类型转换(安全转换和非安全转换)

  1. 静态转换-用于将一种数据类型的值强制转换为数据类型的值-静态转换通常用于比较类型相似对象之间的转换。

    int i=0;
    float f=static_cast<float>(i);
    //static_cast 表示用于安全转换
    //其余转换同其他语言一样
    
  2. 动态转换-用于将一个基类活引用转化为派生类指针和引用。动态转换在运行时进行类型检查,不能进行转换的时候,通常会引发和产生空指针异常

    class Base{};
    class Derived : public Base {};
    Base* base_ptr =new Derived;
    //Java中称为向上转换 C++中体现的是基类指针转换为派生类指针
    Derived* ptr_derived = dynamic_cast<Derived(ptr_base); // 将基类指针转换为派生类指针
    
  3. 常量转换

    常量转换用于将const类型的对象转换为非const类型的对象

    常量转换只能用于转换掉const属性,不能改变对象的类型

    cosnt int i=99;
    int& temp =const_cast<int&>(int); //常量转换,将const int ---》 int 
    
  4. 重新解释转换

    重新解释转换将一个数据类型的值重新解释为另一个数据类型的值,通常用于在不同的数据类型之间进行转换。

    重新解释转换不进行任何类型检查,可能会产生未定义的行为产生

    int i=0;
    float f=reinterpret_cast<float&>(i);
    

非安全转换

//非安全转换 类似这种可能存在损失精度的操作过程
//同时也存在 字符和无字符的存在
double temp =0.3;
int temp_int =temp;

变量作用域

  • 局部作用域在函数内部声明的变量具有局部作用域,它们只能在函数内部访问,局部变量在函数每次被调用时被创建,在函数执行完后被销毁。
  • 全局作用域在所有函数和代码块之外声明的变量具有全局作用域,它们可以被程序中的任何函数访问。全局变量在程序开始时被创建,在程序结束时被销毁。
  • 块作用域在代码块内部声明的变量具有块作用域,它们只能在代码块内部访问。块作用域变量在代码块每次被执行时被创建,在代码块执行完后被销毁。
  • 类作用域在类内部声明的变量具有类作用域,它们可以被类的所有成员函数访问。类作用域变量的生命周期与类的生命周期相同。

***特别注意:***在C++存在指针和引用的概念,Java中存在引用概念,C语言中存在指针的概念;

//指针 
char str='999';
char * string =&str;
double * temp;
//引用
int test=199;
int& temp_int =test;
//两者之间的区别
引用:就是对于一个已经存在变量申请一个别名      类似于C语言中的 typedef test test_t;
指针:指针本身是一个对象,一般存放的是地址值,代表已经初始化的一块存储空间

指针和引用的区别:

  • 不存在空引用,引用必须连接到一块合法的内存
  • 一旦引用被初始化为一个对象,就不能被指向另一个对象。指针恰好相反
  • 引用必须在创建时被初始化,指针可以在任何时候初始化。

二、剖析程序案例

#include <iostream>  //输入和输出流
using namespace std  //自定义命令空间,主要用于区分不同空间中的同名成员函数或者成员变量
int main()
{
    int temp;
    cin>> temp;
    //std::cout std用于区分不同空间中的变量调用
    cout<< "output this value"   //>>读取键盘输出的数据
    std::cout<< "Hello World !"  //<<表示字符通过流的方式进行输出
    std::cin >> temp
    return 0;
}

三、字符串、数组和向量

标准库 String

  • 定义和初始化string对象
#include <string>
//C++中的初始化形式存在两个概念,拷贝初始化(直接赋值)和直接初始化(new对象)
string str="肥肠教主"
string strD("肥肠教主")
string strD(10,"6") //代表10个初始化6字符串相加
//其余功能和作用与其他语言无异议
//特别的  返回的字符大小的类型
string::size_type count=strD.size();

//特别的关键字
decltype() //代表获取其中的传入变量名的数据类型

标准库vector

//标准库函数 -实际上等于Java中的集合
vector<T> contianer
//初始化形式
vector<int> vs;
vector<int> vs1(vs);
vector<int> vs2=vs;

//列表初始化
vector<string> v{"a","b","c"};

//其余的方法和其余语言几乎相同

……基本特性到此结束!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值