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; 此会报错,显示多重定义,《全局变量检测增强》
- 函数检测增强:参数类型增强、返回值检测增强、函数调用参数检测增强
//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++专题,分享走一走~
您可以在登录后,发表评论