c++初步认识

现在偶尔学学c++,隔一段时间就忘了c++的一些基本概念或者操作方法,现在把自己的东西记录一哈

较老的版本

#include<iostream.h>

std::cout<<""<<std::endl;

#include<iostream>
using namespace::std;//告诉编译程序使用std名称空间,这是标准c++库声明使用的名称空间

cout<<""<<endl;

两种形式

标准c++头文件不再使用.h

 

常见头文件:

stdio :standard buffered input&output

带缓冲的输入和输出

iostream : input output stream

标准输入输出流-----cin cout

ctype

字符处理函数 ----getc pintf gets fwriter。。
本类别函数用于对单个字符进行处理,包括字符的类别测试和字符的大小写转换

math

函数处理函数

stdlib

字符串转换 存储器 退出程序等------atol。 malloc exit

string

对字符串进行合并比较--strcpy memecpy strcmp

time

对时间和日期的处理--clock time mktime

出自:http://blog.csdn.net/nkcszwb/article/details/5396269

 

 

今天面试android,却做了一套c的题,真的是各种不上手啊。现在把c遇到的问题都记一下,以免隔断时间又忘光了。

 

c构造函数和析构函数的调用顺序:

#include <stdio.h>
#ifndef AAA
#define AAA
class A {
public:
	A()
	{
		printf("构造方法A\n");
	}
	void fun()
	{
	  printf("fun A\n");
	}

	virtual ~A()
	{
	   printf("析构方法A\n");
	}
};
#endif;


#include "A.cpp"
#include<iostream>
using namespace::std;

class B : public A
{
public:
		B(void)
		{
			printf("构造方法B\n");
		}
		void fun()
		{
			cout<<"fun B\n"<<endl;
		}
	         virtual ~B(void)
		{
			printf("析构方法B\n");
		}
};
 
 int main(int argc,char *argv[]){
	//A a;
	//B b;
	//A* p1=&a;
	//A* p2=&b;

	A* p1 = new A();
	A* p2 = new B();
	p1->fun();
	p2->fun();
	printf("a:%d\n",p1);
	printf("b:%d\n",p2);
	delete p2;
	delete p1;
	system("pause");
}

 

结果:

构造方法A
构造方法A
构造方法B
fun A
fun A
a:4082760
b:4075776
析构方法B
析构方法A
析构方法A

1,子类继承父类,构造方法先父类后子类;析构函数先子类后父类。     

     总结两者的顺序:先构造的后析构,也就是说构造的顺序和析构的顺序相反

2,delete对象完成两个动作,析构和释放空间,当执行delete时,先调用析构函数, 然后调用operate delete删除指针(据说说话应该是把指针指空,而不是删除指针)。    

     对象只在生命周期结束时自动调用析构函数释放对象资源。delete这个动作标志生命周期结束,就必然引起析构

3,如果把main.cpp的注释内容反注释,把new A() new B()注释,这时的delete会在运行的时候报This may be due to a corruption of the heap错误,    

     这是因为这样声明A a和B b, 它的生命周期到该方法结束。我delete 释放了资源,然后在方法结束的时候系统又回自动回收对象A ,B,就会导致上面这个错误。

4,new出来的对象是在堆上,需要手动释放,其他系统会自动释放。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值