C++学习:构造函数
2015-12-27 14:51
501 查看
成员函数的一种
名字与类名相同,可以有参数,不能有返回值
定义时候没有写构造函数,则编译器生成一个默认的没有参数的构造函数,不做任何操作
一个类可以有多个构造函数
构造函数也可以写在类的定义的外面
一个类可以有多个构造函数
对象一旦被定义,不管以什么形式被定义,那么构造函数都会被调用
名字与类名相同,可以有参数,不能有返回值
定义时候没有写构造函数,则编译器生成一个默认的没有参数的构造函数,不做任何操作
一个类可以有多个构造函数
构造函数也可以写在类的定义的外面
一个类可以有多个构造函数
对象一旦被定义,不管以什么形式被定义,那么构造函数都会被调用
class Complex{ private: double r,i; public: void set(double r,double i); };//编译器自动生成默认构造函数 Complex c1; Complex *p = new Complex; //上面两个语句类的默认构造函数均被调用
class A{ private: double real,imag; public: A(double r,double i = 0); }; A::A(double r,double i){ real = r; imag = i; } A a1;//缺少函数参数 A *a = new A;//少参 A a(2);//ok A a(2,4);//ok A *a = new A(3,4);//ok
class CSample{ int x; public: CSample(){ cout << "Constructor 1 Called" << endl; } CSample(int n){ x = n; cout << "Constructor 2 Called" << endl; } }; int main() { CSample array1[2];//构造器1两次被调用 CSample array2[2] = {4,5};//构造器2两次被调用 CSample array3[2] = {3};//先调用2再调用1 CSample *array4 = new CSample[2];//调用两次构造器1 delete []array4; return 0; }
class Test{ public: Test(int n){}//(1) Test(int n,int m){}//(2) Test(){}//(3) }; Test array1[3] = {1, Test(1,2)}; //分别用(1)(2)(3)初始化 Test array2[3] = {Test(2,3),Test(1,2),1}; //(2)(2)(1) Test *pArray[3] = {new Test(4),new Test(1,2)}; //(1)(2) //只初始化两个对象,因为是指针数组,最后一个没有参数 //意味着最后一个至真没有确定指向什么位置,所以不调用构造函数 //没有生成新的对象
相关文章推荐
- C++之路起航——标准模板库(queue)
- C++,清楚明白的解释
- 关于STL中trivial destroctor的小记
- C语言学习笔记------伊能C语言学习笔记-----外部函数
- [LeetCode-230]Kth Smallest Element in a BST
- C语言学习笔记-------伊能C语言学习笔记------静态函数初步
- 《C++ Primer》读书笔记之第15章:面向对象编程
- c++14可以直接书写二进制字面常量了
- C++ 类的成员函数定义在.h中为什么会产生函数重定义错误?
- c++中的转义字符
- C++中string、int常见类型转换(含代码演示)
- C++编译器
- 如何用VC++6.0编写一个游戏
- C/C++中整数与浮点数在内存中的表示方式
- C/C++中整数与浮点数在内存中的表示方式
- C++中int、string等常见类型转换
- C++ 构造函数初始化列表
- C++笔记——虚析构函数的使用场景
- RedHat6.5安裝Gcc與Gcc-c++需要的包
- C++ Stack Implementation Discussion