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();
}
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();
}
相关文章推荐
- [c++]const使用
- 详解C++中的const关键字及与C语言中const的区别
- C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast和const_cast
- C与C++中const的比较
- C++ 中 const 使用
- C/C++中的const
- C++ const char* 常量字符串拼接问题
- 【C++学习笔记】15_指针和const
- C++中const的用法
- c++ const关键字 总结
- 【c/c++笔试题一】const变量通过指针修改问题
- C/C++中const关键字详解
- C++中static 和const的解释
- C/C++ 知识回顾(一) const
- c/c++中const用法总结
- C++ - const 与 迭代器(iterator) 使用 详解
- 【转】标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast和const_cast
- C++中const关键字用法详解及实例和源码下载(一)
- c/c++笔试题——const类型的成员函数内部如何改变成员变量
- C++的类型转换:static_cast、dynamic_cast、reinterpret_cast和const_cast