- 博客(12)
- 资源 (2)
- 收藏
- 关注
转载 C++运算符重载三种形式(成员函数,友元函数,普通函数)详解
首先,介绍三种重载方式: 1 //作为成员函数重载(常见) 2 class Person{ 3 Private: 4 string name; 5 int age; 6 public: 7 Person(const char* name, int age):name(name),age(age){} 8 bool operator<(c...
2018-07-07 15:29:56 12793 2
转载 陷阱重重的C++赋值重载函数operator=
曾经有C++高手说过:看一个C++程序员功底是否够硬,让他写个赋值重载函数就能看出来了!在我看来,这种说法并不夸张。因为能将operator=函数写好确实需要扎实的基础,其中的陷阱真不少。陷阱一:不懂规避自我拷贝先看代码string& string::operator=(const string& rhs){ if (m_pStr != NULL) delete...
2018-07-07 15:18:54 241
转载 重载operator[]的注意事项
【C++语法】关于operator[]重载的注意点今天在书上注意到这样一段代码:#include <iostream>#include <cassert>#include <string>using namespace std; template <class type, int dim>class Point{public: Point(); Po...
2018-07-07 15:01:14 1659
转载 区别++/--操作符前置和后置的差异
这篇文章不是讨论(i++)+(i++)+(i++)的计算结果,更不是讨论(i++)+(++i)+(i++)。 在C++教程中,我们都会学到:i++和++i是两个表达式,他们都会对i进行自增,但是呢,作为表达式,i++的值是自增之前的值,++i的值是自增之后的值。 本文在此基础上,进行一些稍微深入的讨论。 从操作符重载的角度,看i++和++i的区别,是一个比较好的切入点。 操作符重载假设有一个类Ag...
2018-07-07 14:46:57 486
转载 理解常量成员函数
常量成员函数 (const member function), 可读取类中的数据成员,但不能修改。1 声明1.1 const 关键字 参数列表后,加 const 关键字,声明为常量成员函数,表明其不被允许修改类的数据成员 下面的类,以年、月、日的形式来表示日期 (注意:年月日的声明顺序)class Date { public: int GetYear() const { ret...
2018-07-04 21:49:49 3342 1
转载 C++为类中提供类成员的初始化列表(★firecat推荐★)
在使用C++编程的过程当中,常常需要对类成员进行初始化,通常的方法有两种:第一种方法:CMYClass::CSomeClass() { x=0; y=1; }第二种方法:CSomeClass::CSomeClass() : x(0), y(1) { }本文将要探讨这两种方法的异同以及如何使用这两种方法。 从技术上说,第二种方法比较好,但是在大多数情况下,两者实际上没有什么区别...
2018-07-04 21:26:13 7471
转载 C++类中引用成员和常量成员的初始化(初始化列表)
如果一个类是这样定义的:Class A { public: A(int pram1, int pram2, int pram3); privite: int a; int &b; const int c; }假如在构造函数中对三个私有变量进行赋值则通常会这样写:A::A(int pram1...
2018-07-04 21:24:23 2633
转载 将成员变量声明为private
切记声明数据成员为private。它为客户提供了访问数据的一致,细微划分的访问控制,允许约束条件获得保证,而且为类的作者提供了实现上的弹性。 protec并不比public更具有封装性。不应该将数据成员声明为public的三个理由:一、语法一致性 如果数据成员不是public的,客户访问一个对象的唯一方法就是通过成员函数。如果在public接口中的每件东西都是函数,客户就不必...
2018-07-04 21:04:10 2196
转载 class对象大小与什么有关系
之前看了很多关于类对象大小问题的计算,今天闲着没事就来整理整理,写写自己的看法。首先,来看看一个只有构造函数和析构函数的空类:[cpp] view plain copy#include <iostream> using namespace std; class Base { public: Base(); ~Base(); }; int main(int...
2018-07-04 20:56:13 505
转载 struct和class的关系
一、 C++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数据类型的数据结构了,它已经获取了太多的功能。 struct能包含成员函数吗? 能! struct能继承吗? 能!! struct能实现多态吗? 能!!! 原文:http://blog.csdn.net/xdrt81y/article/details/17143...
2018-07-03 22:28:06 968
转载 若不想使用编译器自动生成函数,就该明确拒绝
编译器会自动为我们生成构造函数,拷贝构造函数,赋值操作符和析构函数。如果想要拒绝他们自动生成,那么就自行声明他们,并且令这些函数为private,从而阻止人们调用他。方式一:很明显直接的方法,正如前面所说的,将函数声明为private,但是这样并不绝对安全,因为member函数和friend函数还是可以访问到private成员。方式二:在方式一的基础上,只将函数声明不给出定义,这样编译不出错,但是...
2018-07-03 22:11:42 203
转载 关于#和##的讨论
一、一般用法 我们使用#把宏参数变为一个字符串,用##把两个宏参数贴合在一起. 用法: #i nclude #i nclude using namespace std; #define STR(s) #s #define CONS(a,b) int(a##e##b) int main() { printf(STR(vck)); // 输出字符串"vck...
2018-07-03 21:38:11 116
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人