1.类是一个数据类型,定义一个类是一个抽象的概念,编译器不会再定义类的时候为你分配内存,只有在用类定义变量的时候才给你分配内存。
2.类把属性和方法进行了一个封装。
3.封装继承和多态
4.struct类型加强:在c语言中不认为struct是一种新的数据类型,c++中struct和class可以实现相同的功能
struct Teacher
{
char name[20];
double score;
};
c:struct Teacher t1;
c++:Teacher t1;
5.c++中的所有变量和函数都要有类型,c语言中默认类型在c++中不合法。
g( )
{
return 4;
}
//在c语言中可以,在c++中不可以
6.c++中新增的数据类型:bool类型(true:1)
void main()
{//数据类型的本质是固定大小的内存单元
bool a = true;
cout << sizeof(a)<<endl;//1
a = 10;
cout << a;//1
system("pause");
}
7.三目运算符功能增强:在c语言中,表达式返回的是一个值,在c++中,表达式返回的是一个变量。
要想当左值,返回值要返回一个内存空间(内存首地址,指针)。
int a=10;
int b=20;
(a<b?a:b)=30;
c中是:10=30;
c++中是:a=30;
8.const的不同:
c:是修饰指针本身,还是修饰指针所指向的内存空间
(1). int const b;//指针所指向的内存空间不能被修改
const int *c;
const int b;
(2).int * const d;//修饰指针变量本身,所以指针变量的指向不能被修改
c++中const是常量,c中const是一个冒牌货
const常量是由编译器处理的,提供类型检查和编译器检查
#define d 20
void main()
{
int a = 10;
int b = 20;
int array1[a + b];//Linux内核里面是成立的,因为编译Linux内核的
//gcc编译器支持,但是c和c++编译器不支持
const int c = 10;
//const int d = 10;
int array2[c + d];//c++编译器也可以通过
}
10.
//const定义的变量,由编译器处理,提供类型检查和作用域检查
void fun1()
{
#define a 10
const int b = 10;
//#undef a//a的作用域到此结束
//#undef//所有的define作用域都到此结束
}
void fun2()
{
printf("%d\n", a);
printf("%d\n", b);//报错,因为const的原因,将b的作用域限制在fun1()
}
void main()
{
fun1();
fun2();
}