c++初步认识

来源:互联网 发布:android 淘宝首页布局 编辑:程序博客网 时间:2024/06/07 02:10

现在偶尔学学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 AAAclass 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出来的对象是在堆上,需要手动释放,其他系统会自动释放。

原创粉丝点击