C++学习笔记_02_C++对C语言的增强

一、

  1. 全局变量检测增强
  2. 函数检测增强,参数类型检测,返回值检测,传参个数检测
  3. 类型转换增强,malloc返回值为void,c可以不用转换,C++要转换
  4. struct增强,c中struct不可以有函数方法,并且调用时必须使用struct关键字,而c++中可以加入函数方法,并且在调用时可以不加struct关键字。
  5. bool类型进行增强,c中没有bool类型,c++中有bool类型,且c++bool类型下,非0为真,0为假,bool类型的大小为1(sizeof(bool)=1)
  6. 三目运算符增强,c语言中三目运算符返回的为,而c++中返回的是变量

二、

const检测增强:
1.全局变量const无论c还是c++都不可以更改。
2.对于局部变量const,C语言中的const是伪变量,可以通过int* p = (int*)&m_B;*p = 100; 的方式进行更改,原因是c语言为其分配了内存;C++的const并没有被分配内存,在内部以符号表键值对形式存在无法通过int* p = (int*)&m_B;*p = 100;的方式进行更改。
但是在用普通变量或者是自定义类型定义const变量时,会分配内存
3.c语言中const 默认外部链接,在外部文件中可以不用加extern;但是在c++中,默认为内部链接,在外部文件中必须带有extern关键字来提高作用域。

三、能用const就不要用#define

1.const 有类型,可进行编译器类型安全检查,#define无类型,属于预处理,编译器不可以对其进行类型检查
2.const 有作用域,而#define不重视作用域,默认定义出到文件尾,如果定义在指定作用域下的有效变量,只能用const

c语言和c++语言的对比:

C语言:

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
//1全局变量检测增强
int a;
int a = 10;

//2.函数检测增强,参数类型增强,返回值检测增强,函数调用参数检测增强
int getRectS(w, h)
{
}

void test01() {
	getRectS(100, 100, 100);
}

//3.强制类型转换增强
void test03() {

	char* p = malloc(sizeof(64));
}

//4.struc增强
struct Person
{
	int m_Age;
	//void plusAge();//c语言不可以在struct中加入函数
};

void test04()
{
	struct Person p1;//c语言使用的时候必须加入struct关键字
}

//5.bool类型增强
//bool flag;
//6.三目运算符增强
void test06()
{
	int a = 10;
	int b = 20;
	printf("res=%d",a > b ? a : b);
}
int main() {
	test06();
	system("pause");
	return EXIT_SUCCESS;
}

c++语言:

#define _CRT_SECURE_NO_WARNINGS

#include<iostream>
using namespace std;

//全局变量检测增强
//int a;
int a = 10;
//2.函数检测增强,参数类型增强
int getRectS(int w, int h)
{
	return w * h;
}

void test01() 
{
	getRectS(100, 100);
}

//3.强制类型转换增强
void test03() {

	char* p = (char*)malloc(sizeof(64));
}

//4.struc增强
struct Person
{
	int m_Age;
	void plusAge() {
		m_Age++;
	}//c语言不可以在struct中加入函数
};

void test04()
{
	 Person p1;//c语言使用的时候必须加入struct关键字

	 p1.m_Age = 10;
	 p1.plusAge();
	 cout << p1.m_Age << endl;
}

//5.bool类型增强
bool flag = true;
void test05()
{
	cout << sizeof(bool) << endl;

	cout << flag << endl;

	flag = false;
	cout << flag << endl;

	flag = 100;
	cout << flag << endl;
}

//6.三目运算符增强
void test06()
{
	int a = 10;
	int b = 20;
	(a < b ? a : b) = 100;//可以对三目运算符进行赋值
	cout << "a=" << a << endl;
	cout << "b=" << b << endl;

}

int main() {
	//test04();
	//test05();
	test06();
	system("pause");
	return EXIT_SUCCESS;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值