c++注意事项

纯虚函数只能有.hh文件,不能有.cc文件。

 

类中函数可以有默认参数,但是默认参数只能出现在.hh中,不能出现在.cc中。

 

类中的一般数据成员是对每个对象都有自己的拷贝的,而且每个一般成员函数一定要有一个调用它的对象。

static数据成员不在类的声明中定义或初始化。而在对应的.cc文件中初始化(由于交叉编译/链接的原因)。只在声明中带有static关键字,但是在对应的.cc文件中,是不带static关键字的。也可以用默认初始化,但是还是要出现在.cc文件中,否则会出现链接错误。其他外部代码可用::访问静态成员变量。

static成员函数可以定义在类型的声明中或在定义中(.hh中或.cc中)。外部代码也可以用::来访问静态成员函数。

但是在本类中,静态数据成员和成员函数不需要用::访问,直接访问就可以了。

 

c++支持类模板和函数模板。

定义类模板和定义对象如下:

template<typename T> class Point {
T x_coord, y_coord;
public:
Point() : x_coord(0), y_coord(0) { }
Point(T x, T y) : x_coord(x), y_coord(y) { }
...
};

Point<float> p1(3.31, 2.67);
Point<int> p2(15, -6);

定义函数模板和调用函数如下:

template <typename T>
T square(T val) {
return val * val;
}

int i = 15;
cout << i << " squared = " << square(i) << endl;
Matrix m(3, 3);
// Matrix provides operator*
Matrix m2 = square(m);

函数模板不需要指定模板参数,编译器可以自己从上下文推断出来类型。

函数模板声明如下:

template <typename T> T square(T val);

如果需要也可以指定模板参数:

double result = square<double>(3);

3是整形,所以square(3)会被初始化为square<int>()

所以显示指定模板函数参数是很必要的,尤其是把一个函数模板初始化冰川递给另一个函数或函数模板的时候。

 

 structs或者classes提供了()的重载,然后就可以对其使用适配器了。

STL容器是各种拷贝进拷贝出的。STL使用拷贝构造函数和赋值操作符。

Widget(const Widget&);

Widget & operator=(const Widget &);

当容器和类继承有关时小心子类对象被分片(父类的容器存放子类对象,导致子类对象的子类部分数据成员被舍掉而不能存放)。

 

posted on 2015-05-13 09:57  amdb 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/amdb/p/4499414.html

1. 概述.............................................................................................................................................1 1.1. 自然语言&计算机语言................................................................................................1 1.2. 计算机语言 & C/C++语言..........................................................................................2 1.3. 简单的C/C++程序及其运行方法(环境的使用)................................................2 1.3.1. C/C++程序开发运行环境....................................................................................2 1.3.2. 格式输出函数printf()和格式输入函数scanf()....................................................3 1.4. 习题..............................................................................................................................5 2. 基本的C语言................................................................................................................................6 2.1. C语言中的名词——类型、量值(常量和变量)....................................................6 2.1.1. 整型和整型量值...................................................................................................6 2.1.2. 浮点型和浮点量(常量和变量).......................................................................8 2.1.3. 字符型和字符量(常量和变量).......................................................................9 2.1.4. 字符串常量.........................................................................................................10 2.2. C语言中的动词—运算符,短语-表达式 和和特殊动词性关键字....................11 2.2.1. 赋值运算符和赋值表达式.................................................................................11 2.2.2. 算术运算符和算术表达式.................................................................................12 2.2.3. 逻辑运算符和逻辑表达式.................................................................................13 2.2.4. 关系运算符和关系表达式.................................................................................14 2.2.5. 其它运算符和表达式.........................................................................................15 2.2.6. 不同类型量值的不同运算的混合.....................................................................17 2.3. C语言中的连词及句子——分支、循环和顺序语句..............................................19 2.3.1. if-else:如果-那么...........................................................................................19 2.3.2. switch-case语句..................................................................................................21 2.3.3. ?-:语句................................................................................................................23 2.3.4. for........................................................................................................................23 2.3.5. while....................................................................................................................24 2.3.6. do-while..............................................................................................................25 2.3.7. goto-label-if.........................................................................................................26 2.3.8. break....................................................................................................................27 2.3.9. continue...............................................................................................................28 2.4. C语言中的句子小结..................................................................................................28 2.5. 用C语言写一段话——程序段..................................................................................29 2.6. 用C语言写复杂段落——语句嵌套..........................................................................29 2.6.1. 复杂段落——语句嵌套的含义.........................................................................29 2.6.2. 嵌套语句的示例.................................................................................................30 2.6.3. 复杂段落——语句嵌套的小结.........................................................................33 2.7. 总结............................................................................................................................33 习题...........................................................................................................................................34 3. C语言的横向名词性扩充..........................................................................................................34 3.1. C语言的横向名词性扩充(1):同类变量的集合——数组..................................34
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值