-
-
[分享]命名空间 引用 auto笔记
-
发表于: 2021-5-4 22:29 2600
-
语法糖相当于零食。普通语法相当于主食。
auto 关键字
auto n = 6 ; //类型占位符,类型推导符,跟住右值得类型,推到出左值得类型。
auto 推导出类型之后, 不会再改变。
decltype
1 2 3 | decltype(a) n0 = 8 ; decltype(b) d0 = 3.14 ; decltype(sz) sz0 = "hahha" ; |
跟住括号里面得变量推导 类型。
范围迭代
ary[10] = { 1,2,3,4,5,6,7,22};
for (auto xx : ary)
{
std::cout << xx << std::endl;
}
命名空间:
解决命名冲突得问题。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | namespace Helloword { int a = 999 ; void fun() { printf( "hello word1111\r\n" ); } typedef void ( * pfn)(); } using namespace Helloword; int main() { Helloword::pfn xx = fun; xx(); std::cout << "Hello World!\n" ; } |
全局作用域能做的 ,命名空间也能做到。
using namespace xx;等于一个开关,下面得语句就能使用命名空间得内容。
还有一种,只打开某个变量内容得开关.
1 2 3 4 5 6 7 8 9 10 11 | using Helloword::a; using Helloword::fun; int main() { int c = a; Helloword::pfn xx = fun; xx(); std::cout << "Hello World!\n" ; } |
命名空间还可以拆分:
在命名空间里面再定义命名空间
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | namespace Helloword { int a = 999 ; void fun() { printf( "hello word1111\r\n" ); } typedef void ( * pfn)(); namespace Helloword2 { int on = 99 ; } } / / using namespace Helloword; int main() { Helloword::pfn xx = Helloword::fun; int ccc = Helloword::Helloword2::on; std::cout << "Hello World!\n" ; } |
命名空间可以嵌套
命名空间可以起别名:**
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | namespace Helloword { int a = 999 ; void fun() { printf( "hello word1111\r\n" ); } typedef void ( * pfn)(); namespace Helloword2 { int on = 99 ; } } namespace diaonilaomu = Helloword; / / using namespace Helloword; int main() { diaonilaomu::pfn xx = Helloword::fun; int ccc = Helloword::Helloword2::on; std::cout << "Hello World!\n" ; } |
引用
C++提出解决指针得问题,野指针,空指针。
释放对空间时候 没有初始化 可能会造成野指针
引用就是给变量起别名,必须初始化。
引用没有多级引用。
引用不可以改变引用得内存地址,指针可以。
引用不能修改引用的对象(变量)
引用可以用于所有的类型。
引用不可以类型交叉,可以强转,但是不安全,精度丢失或者 越界。
###
引用与指针的区别
const int xx = 4,编译器把这个当成常量来使用 ,不能修改。类似宏
const int & n = 4. 常量引用可以引用常量,不能赋值,不能改变。
参数传引用,在编译器层面相当于传指针。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
赞赏
看原图
赞赏
雪币:
留言: