【学习笔记】C++再入门过程-2

3 C++与C相比的增强

3.1 全局变量增强

// 告诉用户严谨定义
int a = 10;//赋值,当做定义
int a;//没有赋值,当做声明
int main(){
	printf("a:%d\n",a);
	return 0;
}//此代码在c++下编译失败,在c下编译通过,原因在于c++编译要求更严谨,这里a既定义又声明,不符合编译标准。

3.2 类型增强

c++中所有的变量和函数都必须有类型。在C语言中,函数声明中没有说明其中的参数是什么类型,则可以是任意类型;没有写参数,代表可以传任意类型的实参。BUT,在c++中不行,如果函数没有参数,那么调用的时候不能传实参。

3.3 更严格的类型转换

在c++中要养成一种习惯,两个变量类型应该相同,如果两个变量类型不同怎么办,那就强制类型转换。在c++中多用引用,而不用指针。
在c++,不同类型的变量一般是不能直接赋值的,需要相应的强转。

3.4 结构体的增强

c中定义结构体变量需要加上struct关键字,c++不需要。c中的结构体只能定义成员变量,不能定义成员函数。c++既可以定义成员变量,也可以定义成员函数。(结构体中的函数默认是共有类型)

// 1.结构体中既可以定义成变量,也可以定义成员函数
struct Student{
  string mName;
  int mAge;
  void setName(string name){ mName = name;}
  void setAge(int age){mAge = age;}
  void showStudent(){
  	cout<<"Name:"<<mName<<"Age:"<<mAge<<endl;
  }
};
//2.c++中定义结构体变量不需要加struct关键字
void test01(){
  Student student;
  student.setName("John");
  student.setAge(20);
  student.showStuent();
}

3.5 新增bool类型

标准c++的bool类型有两种内建的常量true(转化为整数1)和false(转化为整数0)表示状态。这三个名字都是关键字。bool类型只有两个值,true(1值)、false(0值),bool类型占1个字节大小,给bool类型赋值时,非0值会自动转换为true(1),0值会自动转换false(0)

void test(){
	cout<<sizeof(false)<<endl;//显示bool类型占的字节大小
	bool flag = true;//c语言中没有这种类型
	flag = 100;//给bool类型赋值时,会自动进行转换
}

3.6 三目运算符

c语言中的三目运算符a>b?a:b,返回的是a或者b的值。
c++中三目运算符是a或b的引用(a或b的变量名)
在程序执行过程中
a=10;b=20;
(a>b?a:b) = 100;c语言中会报错,c++中不会报错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值