【C++入门编程常见问题】(小白必看)

常见问题

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; //引用标准命名空间std

int 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;*/
   //此处无法成功调用,因为无法判断调用的是哪个b
    std::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:相当于回车,相当于光标回到本行首位置,不会换行;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值