有下面一个简单的类:
classClxTest
{
public:
ClxTest(intiSize=13){pszStr=newchar[iSize];};
~ClxTest(){if(pszStr)delete[]pszStr;};
lxOutput(){cout<<pszStr<<endl;};
private:
char*pszStr;
};
现在有下面的两行代码:
ClxTest*pTest=newClxTest();
ClxTest*pTest=newClxTest;
我想大家都知道,两种方法的效果都是一样的--都是声明了一个指向类ClxTest的对象的指针,而在创建对象的时候,都是调用了类的默认构造函数。
可是大家知道下面两行代码的区别吗?
ClxTestlxTest;
ClxTestlxTest();
如果你认为,这两行代码都是声明了一个类ClxTest的对象,在创建对象的时候也都是调用了类的默认构造函数的话,那你就大错特错了!不相信?那你可以试试下面的代码:
ClxTestlxTest();
lxTest.lxOutput();
也许你认为上面的代码没有什么问题,可是事实是这些代码根本不能通过编译!因为C++编译器把ClxTest lxTest();这行代码当成了一个函数声明!这个函数的名字是lxTest,没有参数,返回值的类型是ClxTest!
很令人吃惊,对吧?但是这却与C++中的一条普遍规律相符和--尽可能地解释为函数声明。
如果说你不知道这些的话,当代码编译不通过时,你肯定会百思不得其解,也许要花好长时间也找不出错误在什么地方。当然,如果你的代码是下面的形式,就不会出现编译错误了。
ClxTestlxTest(13);
lxTest.lxOutput();
因为,你指定了类构造函数的参数值,C++编译器不能将ClxTest lxTest(13);这行代码解释为函数声明,它就会去寻找合适的解释而去调用类的构造函数来创建对象。
如果我们在创建类的对象时想使用构造函数的默认参数值,那么除了ClxTest lxTest;的声明方式外,还有一种声明方式ClxTest lxTest = ClxTest();,当然这有点儿画蛇添足了^_^。
分享到:
相关推荐
08_29_C++ C++编译器对普通成员函数的内部处理08_29_C++ C++编译器对普通成员函数的内部处理08_29_C++ C++编译器对普通成员函数的内部处理08_29_C++ C++编译器对普通成员函数的内部处理08_29_C++ C++编译器对普通...
比较方便和好用的C,C++编译器,适合暂时的开发需要。
经典的c++编译器 提取自vs2010
c/c++编译器之Visual C++ Toolkit,同系列的还有c/c++编译器之devcpp和c/c++编译器之MinGWStudio,当然由于免费的microsoft visual studio 2005 express edition有点大,就没有上传了!
对Linux上的C-C++编译器和调试器 Gcc和Gdb的使用作了一定得介绍
c-free是一款集c语言和c++编译功能于一体的适合广大初学者的编译器,希望大家喜欢
c++编译器是一款适合于c及c++编译高手必备的一款好帮手,它能方便给你带来解决很多的调试问题和一些基本语法纠正。很不错的哦!
开源的C++编译器,GCC在WINDOWS上的实现.很好用的.里面附加了GDB用的时候只要把BIN加到环境变量就可以用了.BIN目录下的gcc是C编译器,而g++是C++编译器,as是汇编编译器,dbd当然就是调试器了.
c++编译器,配合入门教材,学习c++很有帮助
c++编译器的开发源代码!词法分析!语法分析!语义分析!自顶向下!
C++编译器源码,有兴趣的朋友可以下载学习 C plus plus compiler source code, if you are interesting in this, please dowloads to learn.
UnderCV_C++编译器源代码.rar
对C语言和C++语言的编译器进行了比较详细的比较和分类
压缩包内附:软件安装包,安装教程和环境变量配置教程 解决问题: ...你可以安装免费提供的MinGW-w64C/C++编译器;有关更多选项,请访问 http://www.mathworks.com/support/compilers/R20116b/win64.html。
很小很实用的一款C++编译器,有函数速查手册在里面!!好好的收藏!
MinGW-w64 C/C++编译器+libsvm安装包
eclipse的C++开发工具,很好用,强烈推荐
c++编译器 mingw 64位 ,学习开发,一起学习........................
Matlab安装 MinGW-w64 编译器。 包括下载好的MinGW-w64 C/C++和 简单的安装步骤(Readme.doc)
用c++实现简单的编译器