c++几个小问题

c++几个小问题:

1、c++控制台中 cout 无法输出string类型变量

碰到了好几次这种错误情况。后来网上搜了搜,发现,#include <iostream.h> ,#include <string.h> 是头文件没有写正确。一直都没有注意过头文件中的.h问题,都是记起来就加上,记不起来就忘记。可是这次追究起来发现,.h 和没有.h的头文件大不相同。出现这个错误也只是因为这个.h的问题。

   百度百科里面找到的原文:<iostream>和<iostream.h>格式不一样  前者没有后缀,实际上,在你的编译器include文件夹里面可以看到,二者是两个文件,打开文件就会发现,里面的代码是不一样的。后缀为.h的头文件c++标准已经明确提出不支持了,早些的实现将标准库功能定义在全局空间里,声明在带.h后缀的头文件里,c++标准为了和C区别开,也为了正确使用命名空间,规定头文件不使用后缀.h。因此,当使用<iostream.h>时,相当于在c中调用库函数,使用的是全局命名空间,也就是早期的c++实现;当使用< iostream>的时候,该头文件没有定义全局命名空间,必须使用namespace std;这样才能正确使用cout。

   很明显还是有很大区别的。飞仔说老师讲过要是系统自带的头文件在c++里面不用带.h,要是自己写的就把.h加上。但是记得加上namespace哦。

一句话概括

如下引用:

#include <iostream>
#include <string>

using namespace std;

2、指针才能使用new分配动态的内存空间:

      如 :

#include<iostream>
#include<string>
using namespace std;
class Actor{
private:
	string _name;
	bool _gender;
public:
	Actor(string name,bool gender);
	~Actor();
	void say();
};
Actor::Actor(string name,bool gender)
:_name(name),_gender(gender)
{
} 
Actor::~Actor(){
	cout<<_name<<"走了"<<endl;
}
void Actor:: say(){
	cout<<_name<<"来了"<<endl;
}
void main(){
	Actor * tang=new Actor("三栈",0);//这里如果tang不是指针类型的话,则不能使用new Actor("...",0);来分配动态的内存空间,即:替换成Actor tang("三栈",0);
	tang->say();
//这里是指针的时候,就要使用到"->",不是指针的时候,就要使用到"."
//	delete tang;
//而且指针要通过delete才会调用其对应的析构函数,非指针类型的,会直接调用。
}


 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值