常见问题
vsstudio快捷键
快速注释组合键 ctrl+k + ctrl+c
取消注释快捷键 ctrl+k + ctrl + u
支持垃圾回收机制
大多数面向对象编程语言具有垃圾回收机制。早期的C++语言不具备垃圾回收机制,这意味着申请的内存资源在使用完成后,需要程序员自己释放。直到C++11标准诞生,提出了智能指针新特性,实现了内存资源的自动管理,使得指针的使用更加灵活,并避免了内存泄漏问题。
iostream和命名空间std的作用?
iostream
std 就是一个命名空间,对象函数很多都是在这里面定义的 用之前调用
三种方式:
1)using namespace std; //引用标准命名空间std
using std::cout;
using std::endl;
std::cout << “123\n”<<std::endl;;
#include<bits/stdc++.h>
#include<iostream> //标准输入/输出头文件iostream
using namespace std; //引用标准命名空间stdint main()
{cout << "hello" << endl;//cout是预定义的输出流对象,用于输出数据//endl表示换行return 0;
}
或者如果不使用命名空间std;
using std::cout;
using std::endl;效果相同
#include<bits/stdc++.h>
#include<iostream>
//using namespace std;
using std::cout;
using std::endl;
int main()
{cout << "123\n";return 0;
}
cout和endl的功能?
cout是c++语言的输出符号。endl是程序的结束符。
cout<<endl是使程序输出结束(有使输出结果换行的功能)”
iostream.h
一个非标准的输入输出流 .h的头文件是c语言格式的
和iostrem的区别是存不存在在std命名空间中
iostream
是标准输入输出流,C++规范的,带有名称空间的头文件 包含在std名字空间中
而iostream流里面又包含cin和cout输入输出对象,所以使用cout的时候必须加std::
通过刚才的比较我们了解到iostream是c++的头文件,而iostreamh是C语言格式的头文件,由于C++格式的iostream是规范的带有名字空间的头文件,所以在使用iostream标准库中的cout对象时要加上名字空间标识符std,而c格式的非标准的输入输出流iostream.h则不用
也就是说从C++开始方才真正引入了名字空间这个新概念,那么名字空间的作用究竞是什么呢?
C++里引入名字空间(namespace)的目的是为了避免和减少命名冲突。一旦一个程序写大了,就很难避免重名,特别是多人合作的情况下。过去C中的解决方法只有靠人为的注意,并自加长名学,以避免重名。这样做会使得一些名字看上去没有意义或者难以理解,而程序员在写程序的时候,也受这个问题的限制,不能自由地命名自己使用的变量或者函数。而有了名字空间(namespace)就不存在这些问题了,这就是C++引入namespace这个概念的好处。
举一个形象的例子
有两个学生,一个叫小王,一个叫小李,他们都各自拥有一本相同的语文书,为了区分这两本书,他们就要在书的封皮上写上自己的名字一小王或者小李。同理,我们调用 cout 对象时也要在前边写上 cout 所属的命名空间“std::”,而在代码里加“using namespace std”,就可以不用再加“std::”。但是最好的方法就是不用“using namespace std”,而是用using std::cout;这样可以避免命名重复,因为不同的名字在不同的命名空间内,将它们都释放出来时,若不小心会造成使用错误库函数中的对象的情况。
重名问题(多个命名空间)
#include<bits/stdc++.h>
#include<iostream>namespace a
{int b = 1;
}
namespace c {int b = 2;
}
int main()
{/*此处可以不使用using就可直接调用using namespace a;using namespace c;*///此处无法成功调用,因为无法判断调用的是哪个bstd::cout << b;int b = 9;std::cout << b << " " <<a::b<< " " << " " << c::b << " " << std::endl;
}
判断数据类型typeid().name()
cout << typeid(today).name() << endl;
制表符\n\t\r
\n:表示换行操作,光标会移动到下一行(next line)
\t:表示水平制表空行操作,相当于Tab键,不会换行
\r:相当于回车,相当于光标回到本行首位置,不会换行;