1.头文件的引用与命名空间的初相识(C++文件以.cpp为后缀哦)
//头文件包含形式
#include <stdio.h>//像C语言那样包含C语言库
#include <cstdio>//去掉.h,在文件名前加c,包含C语言库时可如此操作
#include <iostream>//C++标准输入输出流头文件
//与命名空间的初相识
namespace 空间名1
{
int a = 1;
}
namespace 空间名2
{
int a = 2;
}
//命名空间要点:
// 1.作用:增加相同标识符的使用率
//2.变量为全局变量
对命名空间的访问。
1.1 ::作用域分辩符作用1.空间名限定,类名限定。2.用来标识全局变量
1.2 using namespace 空间名,使用
namespace 空间名1
{
int a = 1;//空间的成员,数据
void print();
}
void 空间名1::print()//::四个小点叫作用域分辩符,表明此函数来自哪里(空间名限定)
{
printf("这是来自空间名1中的函数哦");
}
namespace 空间名2
{
int a = 2;
void print();
}
int main()
{
空间名1::a = 99;
空间名2::print();//前缀比较麻烦,就有了新的方法
//using语法,using namespace 空间名
using namespace 空间名1;
a = 999;//来自空间名1的变量a
//不要存在二意性问题(编译器不知道哪个)
using namespace 空间名2;
a = 999;//这里的a报错:“a”不明确
空间名2::a = 9999;//这里就不会报错,方法各有千秋
return 0;
}
至于空间名的嵌套,访问,大家一看就会
namespace 空间名2
{
int a = 2;
void print();
namespace 空间名3
{
int a = 3;
}
}
空间名2::空间名3::a = 999;//方法1
using namespace 空间名2;//方法2
空间名3::a = 99;
2基本输入和输出
一般包含命名空间using namespace std;
输出cout<<输出值,输入cin>>输入值 .C++支持C语言格式控制字符
#include <iostream>//C++标准输入输出流头文件
using namespace std;//不要忘了加这个
char str[] = "love you";
cout << "I love you!";
cout << str;
//一次打印多个数据
cout << str << "\n" << c << "\t" << "哈哈哈";
//强制转换
cout << str << "\n" << int(c) << "\t" << "哈哈哈";//C++方式
cout << str << endl << (int)c << "\t" << "哈哈哈";
//C++中可用关键字endl替换\n的作用
int num = 0;
float fnum = 0.0f;
char strr[10] = "";
printf("请输入一个整数,一个浮点数,一个字符串");
cin >> num >> fnum >> strr;
输入的空格问题
char str[10] = "";
cin >> str;
cout << str;
char s;//输入I love you时只会将I传给s
cin >> s;
cout << s;
while (getchar() != '\n');//这是上面的三行问题的解决方案,家在char s之前后都可
//对象调用成员,接受空格输入
cin.getline(str, 9);
cout.write(str, 9);
}
如果没有加using namespace std;那么std::cin>> std::cout<< C++标准库调用std::
新的数据类型
2.1bool类型占用一个字节,计算机中非零表示成立,0和空表示不成立
用于充当函数返回值,开关,输出(只有0和1)
C++中有专有的赋值方式false true
C++中空指针用nullptr
2.2引用类型
基本引用 类型名&别名=要起别名的量
常引用(右值引用)
void testbool()
{
bool num = -1;
num = false;
num = true;
cout << num << endl;
int* p = nullptr;//nullptrC++新引入的关键字
}
void printstr(const char* str)//形参必须用const修饰
{
cout << str << endl;
}
void modifyB(int& a) //int&a=实参
{
a = 999;
}
int num = 999;
void modifyPointA(int* p)
{
p = #
}
void modifyPointB(int*& p)//引用
{
p = #
}
void printRIghtvalue(int&& m)//可修改num的值
{
m = 9;
cout << m << endl;
}
void testquote()
{
int hhh = 3;
//类型&别名=要起别名的量
int& 哈哈哈 = hhh;//引用
哈哈哈 = 999;
cout << hhh << endl;
printstr("llllll");
int& x = 1;//报错
const int& x = 1;//不报错,常量取别名要用const修饰
int&& x = 1;//不报错常量是右值,右值引用
//类型名&&别名=右值
}
自动推断类型auto:必须根据赋值的类型推断数据;不能直接推断
auto p=&a;自动推断p为指针类型
3函数思想
3.1 内敛思想 inline关键字 函数编译完的代码以二进制的形式存在(短小的函数)
默认内敛:在结构体或者类实现的函数
3.2 函数重载 :C++允许同名不同参函数存在(参数的数目,类型,顺序不同)
3.3 函数缺省:C++中允许给函数形参初始化,顺序必须从右往左,不能存在没有缺省的
//内敛函数
inline int Max(int a, int b)
{
return a > b ? a : b;
}
//函数重载
void print(int a)
{
cout << a;
}
void print(int a, int b)
{
cout << a << b << endl;
}
void print(char a, int b)
{
cout << a << b << endl;
}
//重载调用,优先调用类型一致的
//函数缺省
void print(int a, int b = 2, int c = 4)
{
cout << a << a + b << c << endl;
}
我是真萌新,就先说到这里啦,有什么不怼的请大佬指正,睡觉喽。