C++快速入门|系列(第二篇)

目录

C++相比于C增加的标识符

C++在命名规则上的改变

 C++数据类型的改变

小结


C++相比于C增加的标识符

以下颜色为彩色的就是C++增加的标识符!!!!

这都是我刚从C语言学完转C++的认为增加的哈(不能误人子弟)

  • 基本数据类型关键字:bool(不过在C99标准中已经添加了只是不是很熟悉所以放这了),与之同类型的有:void 、int、char、float、double。
  • 类型修饰关键字:(咱们都认识)long、short、singned、unsigned。
  • 布尔类型字面值:ture、false.
  • 非常重要的变量声明修饰符:inline与之同类型的有:const
  • 储存类别关键字:(咱们也都认识)auto、static、extern、register。
  • 控制结构关键字:for、while、if、else、do。
  • switch语句关键字:switch、case、default。
  • 路径跳转关键字:break、continue、return、goto。
  • 动态创建变量关键字:new、delete
  • 长度运算符:sizeof。
  • 符合类型关键字:class、struct、enum、union、typedef。
  • 与类成员相关的关键字:this、friend、virtual、mutable、explicit、operator
  • 派生类继承方式:private、protected、public
  • 模板:template、typename
  • 命名空间:namespace、using
  • 异常处理:catch、throw、try
  • 各种操作符的替代名:and、and_eq、bitand、bitor、compl、not、not_eq、or、or_eq、xor、xor_eq
  • 其他不常用的:asm、export、typeid、volatile。

C++在命名规则上的改变

C++的命名很有讲究对大小写很重视,就比如标识符这个temp和Temp是完全不同的标识符,所以在C++的命名过程中为了避免混淆,应该使用不同的变量名而不是大小写。

多了一个类名的概念:

class Student;//这就叫类名

下面的代码看不看得懂无所谓,以后会深入讲解!

//定义类
        class Point {
          constructor(x, y) {
            this.x = x;
            this.y = y;
          }
        
          toString() {
            return '(' + this.x + ', ' + this.y + ')';
          }
        }

String name;(这个String后面会提到,新来的,不用管)

重大的改变:

1.变量和参数用小写字母的单词开头,若由多个单词组成则后面单词首字母大写,变量名推荐:

(名词)或(形容词加名词)的形式

例子:int key;

double newHeight;

2.类名和函数名以大写字母开头的单词组合而成,全局函数名字推荐使用(动词)或(动词+名词)动宾词组的形式。类的成员函数应该去使用动词。为什么成员函数不用名词加动词?不嫌麻烦吗哈哈,省略的名词就是这个对象本身。

例子:class student;

void SetStudent(int id ,String name)//函数名

3.常量全采用大写字母,用下滑线分割单词形式,例如:

const double PI=3.1415;//常量定义,注意注意这不是常变量

const int MAX_LENGTH=100;

以下是一个大佬的博客(描述const在C和C++的不同)好不容易找到!大家康康挺好的哈!!

https://blog.csdn.net/KingOfMyHeart/article/details/114334878

4.静态变量加前缀s_(表示static)例如static s_number;全局变量加前缀g_(代表global)例如int g_length;类的数据成员加前缀m_(代表member)member也就是成员的意思,为啥这么麻烦?

避免与成员函数的参数同名,造成混淆。

例子:

底下的代码不用特别明白,意思就是,防止参数名和成员名一样了,可以理解了吗佬们!

void Student::SetStudent(int id,String name)
{
m_id=id;//数据成员进行赋值
m_name=name;
}

 C++数据类型的改变

1.在原来什么int啥的的基础上添加的bool(布尔)类型

如果整形值为0,布尔值为假!

如果整形值为1,布尔值为真!

例子:

main()
{
bool flag=ture;//定义bool变量赋值为ture
int num=1;
if(flag==num)//一比果然相等
cout<<"相等"<

2.const定义的常量和常变量在上面那个大佬的博客中有介绍(再次感谢大佬)。

3.C++的类型转换相比于C来说隐式转换都是具有且没有改变的(什么你跟我说你不知道什么是隐式转换就是那个char short变int变unsigned变long变double,float也变double的那个)

意思就是低级的和高级的类型运算自动变高级。例子一个int和float的运算就会变成float。

这不是重点!!!

重点是在C++中有了显式转换,最古老的显式转换其实就是C语言的强制类型转换,

C++通过引进4个新的类型转换操作符克服了C语言类型转换的特点,这4个操作符是

static_cast     const_cast    dynamic_cast    reinterpret_cast

static_cast在功能上基本和C语言风格类型转换一样强大,含义也是一样的,但是它有功能上的限制,const_cast用于类型转换掉表达式中const或volatileness属性,dynamic_cast被用于安全得沿着类的继承关系向下进行类型转换,reinterpret_cast特意用于底层的强制转型。

例子:

simplesort程序:

#include
using namespace std;
int main()
{
int firstNumber,secondNumber;//定义两个整形变量
firstNumber=5;
secondNumber=28;
double result =static_cast (firstNumber)/secondNumber;
//定义双精度变量result并赋值
//这个static_cast将firstNumber强制转换为double
//也可以用语句double result =(double)firstNumber/secondNumber;来实现
cout <

这个static_cast和老版(double)就我现在看来几乎没差别。

4.字符串改变十分巨大!

C++字符串定义的一般形式:

String 变量名;

例子:string str;

string a="abcdefg";


字符串赋新值

以下是两种形式

str="abc";

str.assign("abc");


字符串的串联

str=a+b;


交换两个字符串的内容

a.swap(b);


在尾部添加字符

以下是两种形式

str+=a;

str.append(a);


插入字符

a.insert(1.b);在字符串a的第一个字符后面插入字符串b


删除字符

a.erase(2);删除字符串a的第二个字符后所有字符


删除所有字符

a.clear();


替换字符

a.replace(1,2,b);将字符串a中第一个字符后的2个字符用b字符串代替


比较字符串

a==b;

a!=b;

a<=b;

a>=b;

a.compare(b);//这个函数只判断相不相等,等于返回0

注意:比较字符串比较的是ASCII不是长度喔!佬们


返回字符数量

a.size();

a.length();


判断字符串是否为空

a.empty();空返回true否则返回false


将内容以字符数组形式返回

a.data();


返回某一个字串

a.substr(2);获取字符串a后第二个字符后所有字符为子串

a.substr(1,3);获取字符串a后第一个字符后3个字符为子串


字符串非常重要希望读者好好看看。

小结

佬们如果看到这那真是感激不尽了,在本文中我没提到的变化那默认为没有变化就好(帮大家节省时间),如果发现有变化的欢迎评论补充,有什么意见随时提,希望大家一起继续变好!!(看到这了点个赞吧?下次一定!nonono!)

你可能感兴趣的:(c++,开发语言,后端)