首页 > 其它语言 > C,C++中的几点注意

C,C++中的几点注意

  • C、C++数组初始化:

 

数组的概念:一组由同种类型元素顺序排列而成的结构类型。

两个特点:1,数组元素类型相同,2,各个元素放在连续内存区域内。

C、C++不提供数组越界检测,有效数组访问空间0-n-1。

数组初始化:

Int a[5] = {0}; 将全部元素初始化为0,而

Int b[5] = {1}; 仅仅将第一个元素初始化为1,而将其余n-1个元素初始化为0;

Int c[] = {1,2,3,4,5};自动使得数组长度为5.

 

  • C++模板类和类模板的区别:
[cpp] view plaincopy

  1. template <class T>
  2. class A{
  3. public:
  4.     A {};
  5.     ~A{};
  6.     void show()
  7.     {
  8.         cout<< n <<endl;
  9.     };
  10.     void setN( T mn)
  11.     {
  12.         n = mn;
  13.     };
  14. private:
  15.     T n;
  16. }

 

 

上面定义的是一个类模板,在编译如下语句:

A<int>  a;

时,编译器将用类模板生成模板类:

[cpp] view plaincopy

  1. class A{
  2. public:
  3.     A {};
  4.     ~A{};
  5.     void show()
  6.     {
  7.         cout<< n <<endl;
  8.     };
  9.     void setN( int mn)
  10.     {
  11.         n = mn;
  12.     };
  13. private:
  14.     int n;
  15. }

 

然后通过这个模板类来实例化对象a。

同样模板函数和函数模板也是一样的,编译器实际上不会为函数模板或类模板生成任何代码。

还有一点要明确的是,类模板是一个模板,即一个类属,而模板类是一个类。类模板可以做函数的参数。

模板类,类模板,函数模板和模板函数的关系:

 

 

一个类模板在类层次结构中

既可以是基类也可以是派生类:

类模板可以从模板类派生

类模板可以从非模板类派生

模板类可以从类模板派生

非模板类可以从类模板派生

 

 

  • 运算符重载:

 

友员函数重载运算符常用于运算符的左右操作数类型不同的情况。

运算符函数可以重载为成员函数或友员函数。 其关键区别在于成员函数具有this 指针,而友员函数没有,成员函数可以少传递一个参数对象。

不管是成员函数还是友员函数重载,运算符的使用方法相同。  但传递参数的方法不同,实现代码不同,应用场合也不同。

最好应用友元函数的场合:

1.第一个参数为内部类型变量。

2.如果运算符的操作数(尤其是第一个操作数)希望有隐式转换,则 必须用友员函数重载。

C++中不能用友元函数重载的运算符:

= ()【】->

单目运算符重载:

<函数类型> operator++();       //前缀运算符     ++<对象> 成员函数解释为 <对象>.operator++(),友元函数解释为 friend <对象>.operator++(A &a)

<函数类型> operator++(int);  //后缀运算符     <对象>++ 成员函数解释为 <对象>.operator++(0),友元函数解释为 friend <对象>.operator++(A &a, 0);

后缀运算符的重载为了和前缀运算区别增加了一个伪参数。

 

 

 

  • C 格式化输入输出:

 

printf函数:

 

附加函数说明 含义
l 用于长整形数据的输出,可以加在格式符:u,x,o,d,比如ld%表示以10进制的形式,输出长整形数字
m(一个正整数) 输出最小数据的最小宽度,如果数据实际宽度超过m,则按实际宽度输出,如果小于m,则左端补0或者空格,右对齐
.n(一个正整数) 对于实数,表示输出n位小数;对于字符串,表示截取的字符个数
-m(一个负整数)或者单独一个-号 输出字符或者数字左对齐

 

scanf函数

附加格式说明 说明
l 用来输入长整形数据(可用于%ld,%lo,%lx);用来输入double类型数据(可以用%ld或者%le)
h 用来输入短整型数据(可以用于%hd,%ho,%hx)
字段宽度(一个正整数) 用来指定输入数据所占的宽度(列数)
* 用来表示输入项在输入后不赋给相应变量

 


本文固定链接: http://www.devba.com/index.php/archives/932.html | 开发吧

报歉!评论已关闭.