
面向对象基础
zb872676223
pc软件开发
展开
-
对象作为函数参数时调用拷贝构造函数、引用做函数参数时只是传递地址
对象也可以作为函数的参数传递给函数,其转递方法与传递其他类型的数据一样,可采用值传递和地址传递两种方法。值传递:是把对象的拷贝而不是本身传递给函数,函数中对参数对象的任何修改都不会影响调用该函数的对象本身;地址传递:调用该函数的对象与参数对象共用同一个地址,所以,函数对参数对象的任何修改都会影响调用该函数的对象本身。注意:在C++中,下面三种对象需要调用拷贝构造函数(有时也转载 2014-10-13 10:14:24 · 1784 阅读 · 0 评论 -
C++类的对象和类的指针的区别
如下程序: #include #include using namespace std; class Student { public: static int number; string name; public: Student() { } void set(string str) { name = str;转载 2014-10-20 10:28:17 · 574 阅读 · 1 评论 -
什么情况下要有拷贝构造函数
拷贝构造函数,经常被称作X(X&),是一种特殊的构造函数,他由编译器调用来完成一些基于同一类的其他对象的构件及初始化。它的唯一的一个参数(对象的引用)是不可变的(因为是const型的)。这个函数经常用在函数调用期间于用户定义类型的值传递及返回。拷贝构造函数要调用基类的拷贝构造函数和成员函数。如果可以的话,它将用常量方式调用,另外,也可以用非常量方式调用。 在C++中,下面三种对象需要拷贝的情况转载 2014-11-05 16:39:48 · 2531 阅读 · 1 评论 -
C++中虚析构函数的作用
http://blog.chinaunix.net/uid-7672958-id-2598980.html我们知道,用C++开发的时候,用来做基类的类的析构函数一般都是虚函数。可是,为什么要这样做呢?下面用一个小例子来说明: 有下面的两个类:class ClxBase{public: ClxBase() {}; virtual ~ClxBa转载 2015-05-15 15:37:53 · 369 阅读 · 0 评论 -
多线程程序中操作的原子性
今天 看到一道百度笔试题 以下多线程对int型变量x的操作,哪几个需要进行同步: A. x=y; B. x++; C. ++x; D. x=1; 最初有人说选B 因为操作了2个寄存器。答案:ABC 后面干脆将代码汇编了。 得到 x = y;00411A25 mov eax,dword ptr [y]转载 2015-08-31 16:07:34 · 533 阅读 · 0 评论 -
C++:在迭代中删除map的成员
首先要清楚一点,迭代器相当于是容器上的指针,容器可以自己管理内存,因此迭代器可能失效。如果你在不知情的情况下使用了失效的迭代器,后果是不可预料的。可能程序立即崩掉,也可能什么事都没有发生。崩掉了算你幸运,因为你至少知道出了问题,不然有你受的。回到正题,我想说什么呢?比如: 程序代码map theMap;// add somethingto theMap...转载 2015-08-31 16:17:52 · 2153 阅读 · 0 评论