C++ 成员变量的初始化与构造函数
<pre name="code" class="cpp"># include<iostream> using namespace std; class demo { public: demo(){x=0;cout<<"demo的默认构造函数!"<<x<<endl;} demo(int i){x=i;cout<<"demo的带一个参数的构造函数!"<<x<<endl;} ~demo(){cout<<"demo的默认析构函数!"<<x<<endl;} int get(){return x;} void set(int i){x=i;} private: int x; }; class rectangel { public: rectangel(){x=1000;cout<<"rectangel的默认构造函数!"<<x<<endl;} rectangel(int i,int j,int k):x(i),width(j),length(k) //由于有两个demo类的对象,因此调用了两次带一个参数的构造函数 //rectangel(100,200,300);会把100、200、300的一一传递给i、j、k.但是其构造顺序是按着私有成员变量的顺序输出的,先输出length之后是width,并不是按着初始化列表。 //构造函数的初始化顺序是按着成员列表的顺序进行的。 { cout<<"rectangel的带三个参数的构造函数!"<<"长方形b的面积为:"<<length.get()*width.get()<<endl; cout<<length.get()<<endl; cout<<width.get()<<endl; } ~rectangel(){cout<<"rectangel的默认的析构函数!"<<x<<endl;} //析构函数的顺序正好和构造函数相反,哪个先构造就最后析构,后构造的最先析构。 private: int x; demo length; demo width; }; int main() { rectangel(100,200,300); return 0; }
运行结果:
# include<iostream> using namespace std; class A { public: A(int a,int b):num(a),total(b){}; //A(int a,int b){num=a;total=a;} //用下面的语句,系统会报错。 private: const int num; int &total; //引用和const成员函数不能被赋值. }; int main() { A a(3,4); return 0; }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。