好长时间没写C++了,今天写了个很简单的String类,竟然调试了半天,最终发现了一个十分隐蔽的陷阱,写出来供大家分享。
C++中类的拷贝构造函数的作用就是通过类的一个对象来实例化另一个对象。下面是我写的一个MyString类,头文件MyString.h:
#include
using namespace std;
class MyString
{
public:
MyString();...
分类:
编程语言 时间:
2014-12-26 16:41:10
阅读次数:
171
原文来自:http://www.cnblogs.com/xloogson/p/3360847.html1.C++最通用的模板交换函数模式:创建临时对象,调用对象的赋值操作符1 template void swap ( T& a, T& b ) 2 { 3 T c(a); 4 a...
分类:
编程语言 时间:
2014-12-25 14:31:42
阅读次数:
236
复合赋值操作符有:+=、-=、*=、/=、%=、<<=、>>=、>>>=、&=、^=和|=;简单赋值操作符为=;如下所示代码:publicclassExample009{
publicstaticvoidmain(String[]args){
shortx=1;
intx1=1;
inti=123456;
x+=i;//赋值1
x1+=i;//赋值2
S..
分类:
编程语言 时间:
2014-12-24 06:35:15
阅读次数:
166
#include "X.h" X foo()
{ X xx; // …… return xx;
} ① 每次foo()被调用,就传回xx的值 ② 如果class X定义了一个拷贝构造函数,那么当foo()被调用时,保证该拷贝构造函数也会被调用 第一个假设的真实性,必须视class X如何定义,第二个...
分类:
其他好文 时间:
2014-12-23 22:39:02
阅读次数:
254
在派生类中如何写拷贝构造函数一种形式:派生类拷贝构造函数名(对象p的引用):基类构造函数名(参数列表)如:student::student(student&p):stud(p.num,p.name,p.sex)//注意,参数形式,是对象的引用,我们知道引用是C++特有的,这又是一个引用的用法 呵呵一...
分类:
其他好文 时间:
2014-12-22 12:53:50
阅读次数:
257
当我们自己编写拷贝构造函数时,编译器就不会为该类生成默认拷贝构造函数了,对于assignment operator也是如此。1. 拷贝构造函数中记得调用父类的拷贝构造函数,或者相应复制过程class Man {private: int age;public: Man(int _age =...
分类:
编程语言 时间:
2014-12-21 20:40:44
阅读次数:
132
主要讲了1. 一般情况下编译器会为类创建默认的构造函数,拷贝构造函数和copy assignment函数2. 执行默认的拷贝构造/copy assignment函数时,如果成员有自己的拷贝构造/copy assignment函数就执行它,否则就按bit拷贝/赋值3. 几种编译器不会为类生成默认的co...
分类:
编程语言 时间:
2014-12-21 16:36:21
阅读次数:
271
这节讲了下如何防止对象拷贝(隐藏并不能被其他人调用)两种方法:1. 将拷贝构造函数声明为private 并且声明函数但不进行定义#include #include class Dummy {public: Dummy(int d = 0) : data(d) {} Dummy* getC...
分类:
编程语言 时间:
2014-12-21 16:28:13
阅读次数:
228
今天在看《Effective C++》的Item 10时,书中说道,赋值操作符需要返回的是对*this的引用。例如:class Widget {public: ... Widget& operator += (const Widget& rhs) { ... ...
分类:
其他好文 时间:
2014-12-16 16:47:00
阅读次数:
136
1.1赋值操作符x+=y;相当于 x=x+y; //一下计算方法都一样x-=y(减);x*=y;x/=y;x%=y;x >= y; x &= y;x ^= y;x |= y;1.2 符号说明% (取余);++ (自增);-- (自减);& 按位与;| 按位或;^按位异或;~a求反;>右移;>>> 逻...
分类:
编程语言 时间:
2014-12-16 11:22:52
阅读次数:
256