问题
(2)将注释(a)所在的那一行去掉,会出现什么现象?为什么?为什么a数据成员所占用的存储空间要在aa长度基础上加1?若指针a不是指向字符(即不作为字符串的地址),是否有必要加1?
提示错误,因为没有为a指针初始化地址,a将变为野指针。
字符串结束时需要用'\0'。
没有必要。
(3)为类A增加复制构造函数,用下面的main函数测试
int main()
{
...
分类:
其他好文 时间:
2015-04-15 09:38:56
阅读次数:
139
(3)为类A增加复制构造函数,用下面的main函数测试
int main()
{
A a("good morning, code monkeys!");
a.output();
A b(a);
b.output();
return 0;
}
参考解答:
/* Copyright (c) 2014, 烟台大学计算机学院
* A...
分类:
其他好文 时间:
2015-04-14 12:57:51
阅读次数:
134
Constructors/Destructors.我们都知道,在C++中建立一个类,这个类中肯定会包括构造函数、析构函数、复制构造函数和重载赋值操作;即使在你没有明确定义的情况下,编译器也会给你生成这样的四个函数。例如以下类: class CTest{public: CTest(); ...
分类:
编程语言 时间:
2015-04-12 19:03:29
阅读次数:
159
如何专业的定义一个class?这里记录一下自己的checklist- 关于构造函数的注意点a. 构造函数声明为explicit,避免隐式转换b. 考虑禁用复制构造函数、赋值函数c++中,默认对于类会产生以下成员函数(如果你没有定义的话,这通常是不可控的)class Empty() { ...
分类:
编程语言 时间:
2015-04-11 20:49:40
阅读次数:
173
本文的11个问题提取自《C++沉思录》第四章。所有问题的说明均为自己补充。
1 你的类需要一个构造函数吗?
2 你的数据成员是私有的吗?
3 你的类需要一个无参构造函数吗?
4 你的类需要一个虚虚析构函数吗?
5 你的类需要复制构造函数吗?
6 你的类需要一个赋值运算符吗?
7 const总是很重要!...
分类:
编程语言 时间:
2015-04-08 15:02:55
阅读次数:
188
#include #include#includeusing namespace std;//定义值类型/*复制构造函数不再复制指针,它将分配一个新的 int 对象,并初始化该对象以保存与被复制对象相同的值。每个对象都保存属于自己的 int 值的不同副本。因为每个对象保存自己的副本,所以析构函数将无...
分类:
其他好文 时间:
2015-04-06 17:02:29
阅读次数:
161
string类的构造函数:string(const char *s); //用c字符串s初始化string(int n,char c); //用n个字符c初始化此外,string类还支持默认构造函数和复制构造函数,如string s1;string s2="hello";都是正确的写法...
分类:
其他好文 时间:
2015-03-29 23:21:05
阅读次数:
286
智能指针类引用计数智能指针(smart pointer)的一种通用实现技术是使用引用计数(reference count)。智能指针类将一个计数器与类指向的对象相关联,引用计数跟踪该类有多少个对象的指针指向同一对象。引用计数为0时,删除对象。
其基本使用规则是:
每次创建类的新对象时,初始化指针并将引用计数置为1。当对象作为另一对象的副本而创建时,复制构造函数复制指针并增加与之相应的引用计数的值...
分类:
编程语言 时间:
2015-03-29 22:17:24
阅读次数:
325
6.若不想使用编译器默认生成的函数,就该明确拒绝 1.有的时候不希望对象被复制和赋值,那么就把复制构造函数与赋值运算符放在private:中,但是这两个函数是否需要实现呢?假设实现了,那么你的类成员方法和friend函数(类)仍然可以使用这些方法,最好的方法是在private:中声明儿不定义他们,这...
分类:
其他好文 时间:
2015-03-29 19:24:26
阅读次数:
130
l 基础知识:c++的基础知识:面向对象的特性、构造函数、析构函数、动态绑定等,还有常见的设计模式、UML图l C++知识点:sizeofl C++知识点:复制构造函数,l C++推荐书目Effective c++ 适合在面试之前突击c++,该书提到的问题也是面试官喜欢问的问题。C++ primer...
分类:
编程语言 时间:
2015-03-13 01:35:21
阅读次数:
145