析构函数:
#include <iostream>
using namespace std;
class A {
public:
int i;
A(int x) { i = x; }
// 在此处补充你的代码
~A()
{
cout<<i<<endl;
}
};
int main()
{
A a(1);
A * pa = new A(2);
delete pa;
return 0;
}
【封闭类】
什么是封闭类:类里面有对象。比如这里的Big里有对象Base b;
封闭类的构造函数:需要添加初始化列表
类名::构造函数(参数表):成员变量1(参数表),成员变量2(参数表)…
#include <iostream>
#include <string>
using namespace std;
class Base {
public:
int k;
Base(int n):k(n) { }
};
class Big
{
public:
int v;
Base b;
// 在此处补充你的代码
/* Big(int a) //这样写会报错
{
v=a;
b.k=a;
}
*/
Big(int n):v(n),b(n){}
};
int main()
{
int n;
while(cin >>n) {
Big a1(n);
Big a2 = a1;
cout << a1.v << "," << a1.b.k << endl;
cout << a2.v << "," << a2.b.k << endl;
}
}
Const:
知识点:
1.const定义常量: const float pi=3.14;
2.左定值,右定向
const int *p=&a; //修饰内容
int *const p=&a; //修饰指针
const int* const p=&a;
3.
const int func() //返回值不能修改
int func(const int a) //形参a不能改变
int func()const;//不能修改成员变量
#include <iostream>
using namespace std;
struct A
{
int v;
A(int vv):v(vv) { }
// 在此处补充你的代码
const A* getPointer() const //后面的const代表不能修改成员变量
{
return this; //这里想要转换成const,应该这样写:
const A* p=this;
return p;
}
};
int main()
{
const A a(10);
const A * p = a.getPointer(); //错误:将“const xxx”作为“this”参数传递会丢弃限定词
cout << p->v << endl;
return 0;
}