<!-- @page { size: 21cm 29.7cm; margin: 2cm } PRE.western { font-family: "Courier New", monospace } PRE.cjk { font-family: "新宋体", monospace } PRE.ctl { font-family: "新宋体", monospace } P { margin-bottom: 0.21cm } -->
关于构造函数 创建一个类类型的对象时,编译器会自动使用一个构造函数来初始化该对象。 构造函数的尽量初始化数据而不是对数据赋值。 Person(const string &na,const string &add):name(na),address(add){} // 初始化 Person(const string &na,const string &add){ name=na; address=add; }// 初始化+ 赋值 多了1 布 重载操作符 = += 要返回自身的一个引用 用于连锁赋值 a=c=b=10; Person& operator=(Person& p) { name+=p.getPersonName(); address+=p.getPersonAddress(); return *this; }; 第1 个C++ 类 Person.h #ifndef __PERSON__ #define __PERSON__ #include <string> #include <iostream> using namespace::std; class Person{ public: Person(const string &na,const string &add); ~Person(); string getPersonName() const; string getPersonAddress() const; Person& operator=(Person& p); private: string name; string address; }; inline string Person::getPersonName() const { return name; } inline string Person::getPersonAddress() const { return address; } #endif Person.cpp #include "Person.h" Person::Person(const string &na,const string &add):name(na),address(add){ } Person::~Person() { cout<<"free"<<endl; } Person& Person::operator =(Person& p){ name+=p.getPersonName(); address+=p.getPersonAddress(); return *this; }; 类的定义与声明: 类声明给出了1 个不完全的类型 只能定义指向该类型的指针或引用。 如果要创建类的对象以及时候指针或引用访问类的成员,必须先定义! class y; class x{ public : y *p; void f(y t); }; class y{ public : x p; }; 错误的 class x; class y{ public : x p; }; class x{ public : y *p; }; const 对象只能使用const 成员 要不确定的话 可以重载const 成员函数 const Screen& display(ostream &os) const;//const 对象只能调用这个 Screen& display(ostream &os) ; explicit 防止构造函数隐式转换 explicit Person(const string &na,const string &add=""); ~Person(); bool isSame(const Person &p){ return false; } string nullbuul="te"; cout<<p2.isSame(nullbuul)<<endl; //error