c++点滴知识总结

1、cout--console output 控制台输出

     cin---console  input 控制台输入

    endl--end line 结束一行

      .\n-----换行

  cout<<"aa"<<aa<<endl;输出aa

  cin>>aa;                输入aa

 

2、#include <iostream> 系统自带得

   #include "demo.h"    自己写的程序

3、关于字符数组赋值问题: char   ca[100]="good good study \0 everyday";

                      cout<<"ca="<<ca<<endl; ca="good goood study" 到“\0”表示字符串结束标志。

4、

<iostream>和<iostream.h>是不一样,前者没有后缀,实际上,在你的编译器include文件夹里面可以看到,二者是两个文件,打开文件就会发现,里面的代码是不一样的。

后缀为.h的头文件c++标准已经明确提出不支持了,早些的实现将标准库功能定义在全局空间里,声明在带.h后缀的头文件里,c++标准为了和C区别开,也为了正确使用命名空间,规定头文件不使用后缀.h。

因此,当使用<iostream.h>时,相当于在c中调用库函数,使用的是全局命名空间,也就是早期的c++实现;当使用<iostream>的时候,该头文件没有定义全局命名空间,必须使用using namespace  td;这样才能正确使用cout。


5、预处理器变量有两种:已定义和未定义

#define指示接受一个名字并定义改名字为预处理器变量

#ifndef 指示检测指定的预处理器是否未定义,那么更在其后的所有指示都被处理,直到出现#endif。

#ifndef SALES_H

#define SALES_H

#endif

 

6、空语句:只有一个分号得语句。

                      例如:  if(score>80) ;--->该语句为空语句,不论score全部打印出来

                                        cout<<"score"<<score<<endl;

即只有一个分号的语句,它什么也不做。有时用来做被转向点,或循环语句中的循环体。

 

 

 7、指针初始化为NULL等效为初始化为0的值

                          如:int *pi=NULL;//int  *pi=0;

       因为指针的类型用于确定指针所指对象的类型,因此初始化或者赋值时必须保存类型的匹配。

  double  daval;

 double *pd=&dval;(ok)

 double  * pd2=pd;(ok)

 int   *pi=pd;(error)

pi=&dval;(error)


8、对指针进行解引用可访问它所指的对象,*操作符将获取指针所指的对象。

  string s(“hello world”);

string *sp=&s;

cout<<*sp;//prints hello world

string * sp="a new value"

cout<<*sp;//prints  a new value

注意:给指针赋值或通过指针赋值

   如果对左操作数进行解引用,则修改的是指针所指对象的值。如果没有使用解引用操作,则修改指针本省的值

 9、c++通过**操作符指派一个指针指向另一个指针

       int val=1024;

  int *pi=&ival;

int **ppi=&pi;

10、在单个表达式中组合使用解引用和自增操作。

        例如:vector<int>::iterator iter=ivec.begin();

 while(iter!=ivec.end){

 cout<<*iter++<<endl;

}

 对于上述表达式中:理解*iter++:由于后自增操作的优越级高于解引用操作,所以*iter++等效于*(iter++).对于子表达式iter++使iter加1,然后返回iter原值副本作为该表达式的结果。因此,解引用操作*的iter未加1前的副本。

 根据在后自增操作返回其操作数原值(没有加1)的副本。以类比的思想考虑问题,区别于++X这种形式的前自加的表达式,这样的表达式是输出加1后的结果。


11、箭头操作符和解引用操作符

点操作符优先级大于解引用。

  C++在点操作符后使用的解引用操作等效于使用箭头操作符(->);

假如有一个指向类类型对象的指针(或迭代器),则下面的表达式:

(*p).fool;// p->fool;

 12、构造函数的初始化分为2各阶段。(1)初始化段  (2)普通计算段(计算阶段是由构造函数体中的所有语句组成)

          所以对于初始化变量时,尽量使用函数初始化列表进行初始化;

         例如: 

             Test::Test(int a,int b):num1(a),num2(b){//其中num1、num2为成int型的成员变量

}

  引用成员和const 成员初始化只能在函数初始化列表中进行初始化,例如:

  const int cc;

 int&  dd;

 

     Test::Test(int a,int b):cc(a),dd(b){//其中cc、dd为成int型的成员变量

}

对象成员(对象所对应的类没有默认的构造函数) 的初始化,也只能放在构造函数列表中

             Tes    test1;

      Test::Test(int a,int b):test1(a)){//其中test1类成员变量

}

 

13、流运算符的重载

   (1)流运算符的重载只能以友元函数的方式进行重载

    (2)friend  istream& operator>>(istream&,类类型&);

           friend ostream& operator<<(osstram&,const 类类型&);


14、c++没有提供关于图形处理接口GUI和大并发的处理(多线程的功能)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值