C++知识点(自用)

2018-04-27  本文已影响0人  烤肉拌饭多加饭

关于struct和class

c++中的struct可以有成员函数,能继承,能实现多态。。。
那struct和class的区别呢?


关于纯虚函数

class CShape
{
public:
    virtual void Show()=0;
};

(虚函数)virtual void Show = 0 为纯虚函数的格式
纯虚函数只能在继承CShape类的派生类中被实现

class CShape
{
    virtual void Show();//=0
};
CShape cs;  //No! 可以通过编译,但link时失败。

关于虚函数和多态(From:link

虚函数是C++中用于实现多态(polymorphism)的机制。核心理念就是通过基类访问派生类定义的函数。

//给两个A,B类
class A
{
public:
    virtual void foo() { cout << "A::foo() is called" << endl;}
};

class B: public A
{
public:
    virtual void foo() { cout << "B::foo() is called" << endl;}
};
A * a = new B();
a->foo();  // 在这里,a虽然是指向A的指针,但是被调用的函数(foo)却是B的!

【解释:】一个类函数的调用并不是在编译时刻被确定的,而是在运行时刻被确定的。由于编写代码的时候并不能确定被调用的是基类的函数还是哪个派生类的函数,所以被成为“虚”函数


虚函数只能借助于指针或者引用来达到多态的效果

字符串的输入

string s;
cin>>s;
cout<<s;
//~ 输入string string;输出string ~

空格,Tab,回车都会结束输入。

    char c;
    char s[5];
    cin.get(c);//cin.get(字符变量名)
    cin.get();//无参数,舍弃不需要的字符,这里是空格
    cin.get(s, 5);//cin.get(字符数组名,size)
    cout << c << endl;
    cout << s << endl;
//input:
//g
//o gogo
//output:
//g
//o gog

最后的cin.get(s,5)接收4个字符+'\0';

    char s[5];
    cin.getline(s, 5);//cin.getline(字符数组名,size,结束字符/默认是'\0');
    cout << s << endl;

最后的cin.getline(s,5)接收4个字符+'\0';

#include<iostream>
#include<string>
using namespace std;
int main()
{
    string str;
  getline(cin,str);
  cout<<str<<endl;
}
//input:go go go
//output:go go go
//`std::gets` 于 C++11 被弃用,并从 C++14 被移除。

可使用 std::fgets 替代。

上一篇下一篇

猜你喜欢

热点阅读