对象
1、在C++中调用对象不用new。如下例:
class rectangel
{
public:
rectangel(int l,int w){length=l;width=w;}
rectangel(){cout<<"构造函数在运行...\n";}
int area(){return length*width;}
private:
int length;
int width;
};
int main()
{
rectangel a(3,4);
cout<<"长方形a的面积为:"<<a.area()<<endl;
rectangel b;
cout<<"长方形b的面积为:"<<b.area()<<endl;
return 0;
}
2、对象调用完后就会执行析构函数。例:
class A
{
public:
A();
~A();
};
A::A(){cout<<"构造函数执行完毕!\n";}
A::~A(){cout<<"析构函数执行完毕!\n";}
int main()
{
A a;
return 0;
}
打印:
构造函数执行完毕!
析构函数执行完毕!
3、数组对象析构。例:
class A
{
public:
A();
~A();
};
A::A(){cout<<"构造函数执行完毕!\n";}
A::~A(){cout<<"析构函数执行完毕!\n";}
int main()
{
A a[2];
return 0;
}
打印:
构造函数执行完毕!
构造函数执行完毕!
析构函数执行完毕!
析构函数执行完毕!
指针
4、指针的实际值。例:
int main()
{
int i=1;
cout<<&i<<endl;
return 0;
}
打印:002CFD0
int main()
{
int a;
int *p;
p=&a;
cout<<&a<<endl;
cout<<p<<endl;
return 0;
}
打印:0022FB38
0022FB38
指针初始化。例:
int main()
{
int *p=0;
cout<<p<<endl;
return 0;
}
打印:00000000
为止指针赋值。例:
int main()
{
float *p=0;
float a=3.14f;
p=&a;
return 0;
}
int main()
{
int a=1;
int *p;
p=&a;
cout<<*p<<endl;
cout<<a<<endl;
cout<<p<<endl;
cout<<&a<<endl;
return 0;
}
打印:
1
1
005DFEFC
005DFEFC
重点:
int main()
{
int i;
int *p=0;
cout<<"i的地址为:"<<&i<<endl;
cout<<"p的值为:"<<p<<endl;
cout<<"p的内存地址为:"<<&p<<endl;
/*cout<< "*p的值为" << *p << endl;*/因为没有赋值所以无法查看*p
i=3;
cout<<"i的地址为:"<<&i<<endl;
p=&i;
cout<<"p的值为:"<<p<<endl;
cout<<"p的内存地址为:"<<&p<<endl;
cout << "*p的值为" << *p << endl;
return 0;
}
打印:重点:用指针修改放在i中的数据
typedef unsigned short int ut;
int main()
{
ut i;
ut *p=0;
i=5;
p=&i;
cout<<"i="<<i<<endl;
cout << "&i=" << &i << endl;
cout<<"*p="<<*p<<endl;
cout << "p=" << p << endl;
cout << "&p=" << &p << endl;
cout<<"用指针来修改放在i中的数据...\n";
*p=90;
cout<<"i="<<i<<endl;
cout << "&i=" << &i << endl;
cout<<"*p="<<*p<<endl;
cout << "p=" << p << endl;
cout << "&p=" << &p << endl;
i=9;
cout<<"i="<<i<<endl;
cout << "&i=" << &i << endl;
cout<<"*p="<<*p<<endl;
cout << "p=" << p << endl;
cout << "&p=" << &p << endl;
return 0;
}
打印:
更换地址更换值
int main()
{
int i=10;
int j=20;
int *p=&i;//初始化时可以这样赋值
cout<<"i:"<<"\t"<<i<<endl;
cout<<"&i"<<"\t"<<&i<<endl;
cout<<"j:"<<"\t"<<j<<endl;
cout<<"&j"<<"\t"<<&j<<endl;
cout<<"p"<<"\t"<<p<<endl;
cout<<"*p"<<"\t"<<*p<<endl;
p=&j;
cout<<"更换地址后\n";
cout<<"i:"<<"\t"<<i<<endl;
cout<<"&i"<<"\t"<<&i<<endl;
cout<<"j:"<<"\t"<<j<<endl;
cout<<"&j"<<"\t"<<&j<<endl;
cout<<"p"<<"\t"<<p<<endl;
cout<<"*p"<<"\t"<<*p<<endl;
return 0;
}
打印:分配堆空间:
int main()
{
int *p=new int;//创建一个堆并分配内存
*p=4;
cout<<*p<<endl;
delete p;//释放内存空间
cout<<*p<<endl;
p=0;
p=new int;
*p=8;
cout<<*p<<endl;
delete p;
return 0;
}
打印: