关于C++中创建匿名类的时的情况
来源:互联网 发布:淘宝号安全风险 编辑:程序博客网 时间:2024/06/05 02:43
当类可能会创建临时对象时,拷贝构造函数的参数要加上const这个是标准的做法,不加的话在一些类调用拷贝构造函数创建临时对象的时候会报出错误,当然有些编译器不加也不会报错,像VC,但是最好的做法是加上const,又安全又符合标准,下面给出一个例子:
#include <iostream>#include <cmath>using namespace std;class Point{private:int x;int y;public:Point(int xx=0, int yy=0){ x = xx;y = yy;cout<<"Calling the Costructor of Point."<<endl;}Point(Point const& p);int getX(){ return x; }int getY(){ return y; }};Point::Point(Point const& p){x = p.x;y = p.y;cout<<"Calling the copy Costructor of Point."<<endl;}class Line{private:Point p1,p2;double length;public:Line(Point p1, Point p2);Line(Line& l);double getLength(){ return length;}};Line::Line(Point p1, Point p2):p1(p1),p2(p2){double x;double y;x = p1.getX() - p2.getX();y = p1.getY() - p2.getY();length = sqrt( x*x + y*y ); cout<<"Calling constructor of Line."<<endl;}Line::Line(Line& l):p1(l.p1),p2(l.p2){cout<<"Calling the copy Constructor of Line."<<endl;length = l.length;}int main(void){Point p1(3, 4);Point p2(8, 10);cout<<"length = "<<Line( Point(3,4) ,Point(5,6) ).getLength()<<endl;//cout<<Point(4,6).getX()<<Line(p1, p2).getLength()<<endl;return 0;}当Point的复制构造函数的参数没有加上const时,g++编译器会报错,但是windows下VC是不会报出错误的。但是最好还是把const加上,这样更加符合我们所要做的事情——仅仅是拷贝内容。
0 0
- 关于C++中创建匿名类的时的情况
- 关于类的匿名对象
- 创建匿名类 重写匿名类的方法
- 关于c语言用双重指针在无需返回的情况下于函数中创建链表的一点小小发现
- 【c语言】关于+1的各种情况
- C++中创建临时对象的情况
- 匿名管道的四种特殊情况
- 匿名管道的四种情况
- js中匿名函数的创建和调用方法分析
- js中匿名函数的创建与调用方法分析
- 关于编程中遇到inf的情况
- C语句中涉及到条件判断时的情况分析
- C语言中char字符为0时的情况
- C 编程中遇到的几种易错情况
- c语言好难——关于形参传递中有const的情况
- 关于JAVA中匿名内部类的使用
- 匿名内部类中关于new Runnable()的使用
- 关于创建SQL数据库脚本没有默认值的情况
- LeetCode 66 Valid Number
- Codeforces 10C Digital Root 规律题
- 单向链表反转(java)
- Spring@Autowired注解与自动装配
- C++编程学习之LeetCode OJ
- 关于C++中创建匿名类的时的情况
- 锁相环的组成和工作原理
- LeetCode:Length of Last Word
- ubuntu下通过unixodbc和freetds连接数据库
- 广告贴
- libjingle实现音视频通信基础
- 电子商务-作业二
- 阻抗匹配与史密斯(Smith)圆图: 基本原理
- 小白鼠吃药验证