class man{
public:
char *name;
int age;
public:
man();
man(const man &it);
man(const char *s, int i = 0);
~man();
//如果类成员有指针,那么需要自己实现拷贝构造函数,不然存在浅拷贝的风险。
void set_name(const char *s);
void set_age(int i);
//此处的const表示要操作一个const的量(因为如果定义一个常量对象的话,类中的定义的所有变量都成了常量)
const char *get_name() const;
int get_age() const;
};
using namespace std;
man::man() :age(0), name(NULL){
cout << "man" << "\n";
}
//以拷贝的方式初始化函数,指向自己类的一个引用
man::man(const man &it){
cout << "copy man" << "\n";
name = new char[100];
strcpy(name, it.name);
age = it.age;
}
//对有参数的初始化函数分配内存
man::man(const char *s, int i){
name = new char[100];
cout << "man" << s << i << "\n";
strcpy(name, s);
age = i;
}
// 析构函数
man::~man(){
delete []name;
cout << "~man" << "\n";
}
//给man中的成员变量赋值
void man::set_name(const char *s){
strcpy(name, s);
}
void man::set_age(int i){
age = i;
}
//获取man中成员变量的值
const char *man::get_name() const{
return name;
}
int man::get_age() const{
return age;
}
/命名空间
using namespace std;
int main(int argc, const char * argv[]) {
const man m;// 常量对象(类中的所有的成员都成了常量)
cout << m.get_age() << "\n";
return 0;
}