#include <iostream>
#include <string>
using namespace std;
struct date {
int year;
int month;
int day;
};
struct Person{
string name;
int age;
bool gender;
date d;
Person(){
cout << "构造person结构"<<endl;
}
~Person(){
cout << "析构person结构"<<endl;
}
};
class autoPtr{
Person *p;
public:
explicit autoPtr(Person *p):p(p){}; //加上explicit表示显式调用
~autoPtr(){
delete p;
}
};
void main(){
autoPtr p = new Person();//隐式初始化
Person *p1 = new Person();
autoPtr p2(p1);//显式初始化
getchar();
}
</string></iostream>
const关键字、
对成员形参加const 表示不能修改传入的实参变量
对成员函数后加const 表示对改成员函数原型及函数中的对象成员加了const(只读)限制例如:对上述代码做如下修改
例如:
class autoPtr{
int a;
Person *p;
public:
autoPtr(Person *p):p(p){};
~autoPtr(){
delete p;
}
void hit()const{};
};
void autoPtr::hit()const{
a = 100; //90: 由于正在通过常量对象访问“a”,因此无法对其进行修改
}