二. C++对C的增强


  斑马斑马      118   
  2020-12-28      C++      

C++对C的增强可总结为:
1. 全局变量检测增强
2. 函数检测增强:参数类型增强、返回值检测增强、函数调用参数检测增强
3. 类型转换检测增强
4. 结构体struct增强:C++中可以加函数,C使用时不可加函数。另外C使用时必须加struct:(如:struct Person p1),C++可不加
5. bool类型增强,只有真或假
6. 三目运算符增强
7. const增强; C中可以用指针改,而C++不可以

1. 全局变量检测增强

int a;
int a = 10;  此会报错,显示多重定义,《全局变量检测增强》
  1. 函数检测增强:参数类型增强、返回值检测增强、函数调用参数检测增强
//int getRectS(w, h)   //在C中可跑通,C++报错
int getRectS(int w, int h)    //
{                               //若无返回值会报错必须返回一个值
    int g = w * h;
    return g;
}
void test02()
{
//  getRectS(10, 10, 10);            //在C中可跑通
    int g=getRectS(10, 10);
    cout << g << endl;
}

3. 类型转换检测增强

void test03()
{// char* p = malloc(sizeof(04)); //malloc返回值是void* ,C中可跑通,在C++中显示无法从void*转化成char*
    char* p = (char*)malloc(sizeof(04));
}

4. 结构体struct增强:C++中可以加函数,C使用时不可加函数。另外C使用时必须加struct:(如:struct Person p1),C++可不加

//4. struct的增强:  C++中可以加函数,C使用时可不加struct
struct Person
{
    int m_Age;
    void plusAge() { m_Age++; };         //c++语言中struct可以加函数,C不行
};

void test04()
{
//  struct Person p1;  //C使用时候必须加入struct关键字
    Person p1;             //C++可以不加
    p1.m_Age = 10;
    p1.plusAge();
    cout << p1.m_Age << endl;
}

5. bool类型增强,只有真或假

// 5、bool类型增强(真或假)
bool flag=true;    //只有真或假
void test05()
{
    cout << sizeof(bool) << endl;
}

6. 三目运算符增强

//6. 三目运算符增强
void test06()
{
    int a = 10;
    int b = 20;
//  printf("ret=%d\n", a > b ? a : b);  //C语言中的用法
//  a<b?a:b=100;         //c语言报错
    (a<b?a:b)=100;         //c++可通过,返回了b等于100,C++返回的是变量

    cout << "ret=" << (a > b ? a : b) << endl;
}

7. const增强; C中可以用指针改,而C++不可以。

C语言中const修饰的常量是伪常量,编译器会分配内存;而C++中不会分配内存,编译器会开辟一临时空间,临时空间是看不到的

//7. const增强不可以改,C中可以用指针改
const int m_A = 10;
void test07()
{
    //m_A = 100;
    const int m_B = 20;  //c语言伪常量,C++中为真正的常量
    int* p = (int*)&m_B;             
    *p = 200;                  //*取地址中的值
    cout << "p=" << p << endl;
    cout << "*p="<<*p << endl;
    cout << "m_B=" << m_B << endl;
}
//c语言中const修饰的常量,是伪产量,编译器会分配内存
//C++中,const不会分配内存,const int m_B=20;
//编译器会临时开辟一个空间,
//如:int tmp=m_B//tmp有内存, int *p=(int*)&tmp *p指向的是临时那块空间,临时空间看不到

作者:东园桃与李

ps:以上是二. C++对C的增强全部内容,希望文章能够帮你解决二. C++对C的增强所遇到的游戏开发问题。
本文收录在 游戏编程 🕹️ - 学习C++专题,分享走一走~

猜你喜欢 全系列


您可以在登录后,发表评论