C++学习002:命名空间,输入输出,auto,引用,常量,头文件防卫

命名空间

不同命名空间里面可以用相同的函数名
相同的函数名不能放在同一个命名空间中
定义可以不连续甚至放在多个文件中
:: 为作用域运算符

输入输出

cout << endl输出到输出缓冲区
endl是一个函数指针
其中<<是重载了位运算的运算符,把输出传到输出缓冲区中,从右往左算
同理cin>>中>>也是重载了运算符,从左到右算
cin和cout都是对象
重载和重写的区别?
重写是子类具有父类的同名方法,调用时执行重写的函数
重载是对类中相同函数/运算符名根据形参不同重载不同的方法
endl的意义以及和\n的区别:endl是换行并且刷新输出缓冲区
输出缓冲区什么时候被显示:
1.输出缓冲区满了
2.main函数执行到最后return
3.执行endl刷新缓冲区

初始化变量

a = 1
a {1}
a = {1}加大括号后等于号可以省略
可以用{}来初始化变量了

auto

发生在编译时候不会拖慢运行速度,自动推测目标类型,省略很长的类型名方便编写

头文件防卫

#ifndef __HEAD__H__
#define __HEAD__H__

xxx

#endif

防止同一个头文件被两次引用,或者交叉引用时候导致的错误
(这里和#pragma once异曲同工)

#pragma once 

(1)#ifndef

#ifndef的方式受C/C++语言标准支持。它不仅可以保证同一个文件不会被包含多次,也能保证内容完全相同的两个文件(或者代码片段)不会被不小心同时包含。

当然,缺点就是如果不同头文件中的宏名不小心“撞车”,可能就会导致你看到头文件明明存在,但编译器却硬说找不到声明的状况——这种情况有时非常让人郁闷。

由于编译器每次都需要打开头文件才能判定是否有重复定义,因此在编译大型项目时,ifndef会使得编译时间相对较长,因此一些编译器逐渐开始支持#pragma once的方式。

(2)#pragma once

#pragma once 一般由编译器提供保证:同一个文件不会被包含多次。注意这里所说的“同一个文件”是指物理上的一个文件,而不是指内容相同的两个文件。

扫描二维码关注公众号,回复: 14611577 查看本文章

引用

又叫别名,必须被初始化,和原值是同一个地址(不一定,例如下面的例子var1和var输出并不同说明不是同一个指向,但是学习时认为是同一个地址)

常量

理解上const表示常量,不可被修改
但是实际上可以用引用的技巧来修改,但是不要这么做
例如

const int var = 1;
int &var1 = (int&)var;
var1 = 2
输出var1,var

constexpr也是常量的概念C++11提出,在编译时求值,提升性能

猜你喜欢

转载自blog.csdn.net/TongOuO/article/details/129760999
今日推荐