头文件与命名空间
-
创建的源文件是.cpp,头文件没有变化,依然的.h文件
-
包含目录
C语言中的:采用原来的方式包含可以用C++包含方式,去掉.h加个c
C++的标准输入输出头文件是iostream -
命名空间的引入
命名语法
//1.基本创建空间方法
namespace 空间名
{
int a;
void print(){}
}
//2.学会访问命名空间中的东西,用空间名限定去访问
int main()
{
空间名::a=1;
空间名::printf();
return 0;
}
-
可以增加标识符的使用率,C语言同一个作用域下不允许定义相同的标识符
-
作用域分辨符::
空间名限定,类名限定
用来标识全局变量 -
using语法 ,可以省略前缀的写法
using namespace 空间名; //可省略当前空间名,但是只在当前作用域下有效
- 空间名嵌套与空间内容访问
namespace A
{
int a=1
namespace B
{
int b=2;
}
}
A::B::b=12; //剥洋葱
using namespace A::B;
b=13
基本输入和输出
-
包含头文件#include
-
一般情况都会包含命名空间using namespace std; 如果不包含所有头文件包含的语句会报错
-
输出语句:cout<<
C++支持C语言的格式控制字符 -
输入语句:cin>>
#include <iostream>
using namespace std;//一般都是写在这里
//输入的几个问题
//1.字符串输入空格问题
void testStr()
{
using namespace std;
char str[10] = "";
cin >> str; //不带空格的输入
cout << str;
//fflush(stdin) //已被淘汰
//setbuf(stdin,NULL);
while (getchar() != '\n'); //字符和字符串输入前,做了输入
char c;
cin >> c;
cout << c;
//接受空格的输入--->了解
cin.getline(str, 10); //gets_s(str, 10);
cout.write(str, 10);
}
//2.关于命名空间std
void testNamespace()
{
//当不加using namespace std;
std::cout << "没有写using namespace std" << std::endl;
std::string str = "ILoveyou";
}
int main()
{
//1.基本变量打印不需要格式控制
cout<<"OK\n";
char str[]="ILOVE\n";
cout<<str;
int a=1; float b=1.1;
//2.一次性打印多个数据,强制类型转换
cout<<a<<"\t"<<(int)b<<"\n";
cout<<a<<"\t"<<int(b)<<"\n";
//3.C++换行 endl代替\n
cout<<"姓名"<<endl;
testStr();
}
新数据类型
-
bool类型
占用内存一个字节
计算机非零表示成立,只有0或者指针空表示不成立
一般充当函数返回值,或者开关
正常输入是0和1
C++专有的赋值方式,false和true -
指针的NULL C++中改为nullprt
-
引用类型
理解为起别名
基本引用
//类型名& 别名=要起别名的东西
int a=1;
int&b =a;//a有另一个名字叫b,a就是b,b就是a
- 引用一般用在那些地方
函数参数(防止拷贝产生)
函数返回值(增加左值使用)
不能返回局部变量引用
#include <iostream>
using namespace std;
void testBool()
{
bool b=123;
cout<<b<<endl;
b=false;
b=true;
cout<<b<<endl;
//boolalpha用true和false方式打印bool类型
cout<<boolalpha<<b<<endl;
}
int main()
{
//1.什么是起别名
int a= 1;
//类型 & 别名=要起别名的东西
int& b= a; //b就是a的别名
小可爱 = 777;
cout << b<< endl;
//2.C++种常量要求更严格
//想要变量和常量,就必须用const修饰
printStr("ok"); //形参必须要有const
char str[] = "ok";
printStr(str);
int aa = 1;
const int& x = 1; //第一种写法:const修饰
const int& x2 = aa;
//右值引用,只能给右值起别名
int&& xx = 1; //常量是右值(运算符的右边)
//int&& xx2 = aa; //右值引用只能给右值起别名
return 0;
}
-
自动推断类型auto类型:必须根据赋值的数据推断类型,不能直接推断
函数思想
- 内敛思想 inline关键字
- 什么样的函数可以成为inline,短小精悍
- 在结构体中或者类种实现的函数默认内敛(知道即可)
- 函数重载: C++允许同名不同参数函数存在
- 参数数目不同
- 参数类型不同
- 参数顺序不同(一定建立在不同类型的基础上)
- 函数缺省: C++中允许给函数形参初始化
- 缺省顺序 必须从右往左缺省,缺省的参数中间不能存在没有缺省的
- 没有参入参数,使用的是默认值