您的位置:首页 > 编程语言 > C语言/C++

c++中的const

2018-03-26 20:20 211 查看
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是一个冒牌货



9.const 和define的相同之处:#define在编译预处理阶段处理
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();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: