string类的构造函数:string(const char *s); //用c字符串s初始化string(int n,char c); //用n个字符c初始化此外,string类还支持默认构造函数和复制构造函数,如string s1;string s2="hello";都是正确的写法。当构造的st ...
分类:
编程语言 时间:
2016-10-02 10:58:51
阅读次数:
215
今天做C++ primer的习题,被复制构造函数和赋值符的区别弄晕了。简单地说,有一道题目如下描述: class t1; class t2 = t1; 我先看见有一个等号,以为就是赋值符来做的,其实并不是这样的。做一个实验好了: 运行的结果如下: Constructor of CTestCopy C ...
分类:
编程语言 时间:
2016-09-29 15:35:03
阅读次数:
147
String::String(const String &other) //拷贝构造函数 { cout << "自定义拷贝构造函数" << endl; int length = strlen(other.m_data); m_data = new char[length + 1]; strcpy(m ...
分类:
其他好文 时间:
2016-09-19 10:02:05
阅读次数:
140
1.什么是复制构造函数 复制构造函数:是构造函数,其只有一个参数,参数类型是所属类的类型,且参数是一个const引用。 作用:将本类的成员变量赋值为引用形参的成员变量。 2.什么是赋值操作符 赋值操作符:返回值是本类的引用类型,参数类型是所属类的类型,且参数是一个const引用。 作用与复制构造函数 ...
分类:
编程语言 时间:
2016-09-07 01:07:02
阅读次数:
163
也许很多C++的初学者都知道什么是构造函数,但是对复制构造函数(copy constructor)却还很陌生。对于我来说,在写代码的时候能用得上复制构造函数的机会并不多,不过这并不说明复制构造函数没什么用,其实复制构造函数能解决一些我们常常会忽略的问题。 为了说明复制构造函数作用,我先说说我们在编程 ...
分类:
其他好文 时间:
2016-09-01 20:02:13
阅读次数:
144
1.动态(晚期)联编需要显示定义复制构造函数,赋值运算符,虚构函数。 2.纯虚类不能声明对象。 3.赋值运算符的特征标随类而异。 4.返回类型协变,重新定义继承的方法,应确保与原来的原型完全相同,但如果返回类型是基类的引用或指针,则可以修改为改变指向派生类的引用或指针。 5.保护访问,对于派生类来说 ...
分类:
其他好文 时间:
2016-09-01 14:42:01
阅读次数:
129
常见问题 Q1. 下列运算符,在C++语言中不能重载的是( )。 A. * B. ?: C. :: D. delete Q2. 编写类String的构造函数、析构函数和赋值函数。 Q3. 复制构造函数与赋值运算符的区别是什么? Q4. 下述代码的输出结果是什么? Q5. 如何限制栈对象的生成?如何限 ...
分类:
编程语言 时间:
2016-08-11 00:48:32
阅读次数:
255
1、赋值操作符的定义 注意:返回值类型必须为引用(一般返回值为*this) 如果不是返回引用,而是直接返回Test,那么从返回形参到实参中间又要继续调用赋值操作符=,这样会形成死循环,导致栈溢出,编译也不能通过 2、赋值操作符的调用 复制构造函数和赋值操作符的区别: 赋值运算符处理两个已有对象,即赋 ...
分类:
其他好文 时间:
2016-08-09 20:32:41
阅读次数:
120
常见问题 Q1. 下面代码的输出结果是( )? A. a a a B. a a a a C. a a D. a Q2. 为什么拷贝构造函数的参数是一个引用,可以不是引用吗? Q3. 什么是深复制?什么是浅复制? 复制构造函数 1. 复制构造函数 只有单个形参,而且该形参是对本类类型对象的引用(常用c ...
分类:
编程语言 时间:
2016-08-09 09:24:19
阅读次数:
152
了解C++默默编写并且调用哪些函数 一个空类,C++处理过后会默认加上一个复制构造函数,复制赋值操作符和析构函数,但是只有当这些函数被需要被调用的时候才会被C++创建,平时的话一个空类不被使用也就是一个空类了。 编译器生成的copy构造函数用法 默认的这两个函数仅仅是将对象的成员进行简单赋值。 这就 ...
分类:
其他好文 时间:
2016-08-05 08:50:17
阅读次数:
181